我有一个列表,其中 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