python - 使用 Python 将整数转换为两个字节的十六进制

标签 python python-2.7 math raspberry-pi

我需要取一个整数(例如-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,其中 hexff38


如果您需要发送 0-255 整数,这可能会更好:

>>> struct.unpack('>BB', struct.pack('>h', -200))
(255, 56)
>>> struct.unpack('>BB', struct.pack('>h', 200))
(0, 200)

你在哪里解压成两个unsigned chars


必需 documentationstruct

关于python - 使用 Python 将整数转换为两个字节的十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214309/

相关文章:

python+mysql让代码每分钟运行一次

python - 查找最大和最小日期

python - arg_scope 实际上是做什么的?

python-2.7 - 使用 SSL 和 header 在 python 中通过 SUDS 调用 Soap API

Java float 数学错误?

找到光线转换到 "special"胶囊的算法

python - 将文件内容存储在缓冲区中并将其分配给 Python 中的指针

python - NumPy 性能 : uint8 vs. float 和乘法与除法?

python - 多重继承: only 1 parent init'd

math - 生成由Zipf分配的随机数