0

我有一个存储在缓冲区 [] 中的 2 个整数的列表。我想要交换两个字节。例如,如果第一个元素是 13 和 05 ,我需要将输出作为十六进制字符串读取为 050d (即,交换原始字节 13 和 05 - 使其读取为 05 和 13 然后读取为十六进制) . 稍后我需要将其转换为 int (1293),我想我可以使用 int() 运算符来实现。

我不太确定我正在做的按位运算。我现在做的是:

print(hex(buffer[0]<<8 | buffer[1] )[2:])

这会将输出打印为 d05。但我想要的是050d。稍后我可以使用 int() 功能将其转换为 int 。有人可以帮我进行移位操作吗?谢谢!

解释更多:这是我的示例程序:

    buffer = []

def func():
    global buffer
    buffer.append(13)
    buffer.append(05)

func()
print(buffer)

print(hex(buffer[0]<<8 | buffer[1] )[2:])

这将打印 b05,而我想要的输出是 050b。

4

1 回答 1

2

你可以这样做:

print((buffer[1] << 8) | buffer[0])

这将输出1293,这是您想要的最终结果,假设您有 8 位整数(因此是 8)。如果您还想要十六进制表示,您可以这样做:

print(hex((buffer[1] << 8) | buffer[0]))

输出0x50d

于 2018-08-19T12:12:34.043 回答