我需要取一个整数(例如-200)并将其转换为十六进制(FF 38),然后转换为0-255 的整数以通过串口发送。我得到的例子是:
-200 = hex FF38 = [hex FF] [hex 38] = [255] [56]
我试过使用 struct.pack('>h', -200)
但返回的值不正确。我也试过 hex()
但它返回了一个负的十六进制值,这也是不正确的。
我不知道我还应该尝试什么。
最佳答案
>>> hex(struct.unpack('>H', struct.pack('>h', -200))[0])
'0xff38'
首先,您将 -200 打包为带符号的 2 字节短整数。然后将该数据解压缩为unsigned 2-byte short int。这给你 65336,其中 hex
是 ff38
如果您需要发送 0-255
整数,这可能会更好:
>>> struct.unpack('>BB', struct.pack('>h', -200))
(255, 56)
>>> struct.unpack('>BB', struct.pack('>h', 200))
(0, 200)
你在哪里解压成两个unsigned chars
必需 documentation在 struct
关于python - 使用 Python 将整数转换为两个字节的十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214309/