如何交换列表中的两个字节并最终将其打印为 int?



我有一个列表,其中 2 个整数存储在缓冲区 []。我希望交换两个字节。例如,如果第一个元素是 13 和 05,我需要将输出作为十六进制字符串读取为 050d(即,交换原始的 byes 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。

你可以这样做:

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

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

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

输出0x50d

最新更新