python 十六进制负载转换为字节数组并转换字节顺序

python hex payload into bytearray and convert endianness

您好,我正在寻找一种方法来解码十六进制编码的传感器负载。

负载是 payload_hex = "11154c1789870005bd0005bd01000200002900" 我使用

将其转换为字节数组
byte = bytearray.fromhex(payload)
decoded = {}
decoded["byte_7"]=byte[7]
decoded["byte_8"]=byte[8]
print(decoded)

我得到的结果是 byte_7 = 5 和 byte_8 = 189,但这是错误的,正确的数字应该是 byte_7 = 1280 和 byte_8 = 189. 问题是字节序。十六进制 05 应该是 1280,十六进制 bd 应该是 189.

谁能告诉我如何让它在 python 中工作?

提前致谢!

字节 7 不能是 1280,因为 一个 字节只能容纳从 0 到 255 的数字。十六进制 05 只是 5,而不是 1280。然而,十六进制 0500 是1280.

你应该像 05bd 那样把两个字节放在一起,这是通过移位和 ORing 完成的:

>>> 0x05 << 8 | 0xbd
1469
>>> hex(0x05 << 8 | 0xbd)
'0x5bd'