Python 包字符串作为 ascii 十六进制值

1 python struct pack

我对 struct 模块和 pack 方法有问题(可能是在理解中)。我需要打包一条消息与传感器进行通信。此消息的一个值是一个整数(在本例中为“0”和“3”)的 ascii 表示,即 48 和 51。传感器仅接受十六进制值(在本例中为 30 和 33)。但是当我使用pack('BB',48,51)它时,它会返回 '\x0003',但我需要 '\x30\x33'。有没有办法将这两个字符转换为“十六进制二进制”?

gre*_*gor 5

'\x30\x33' 是相同的 '03'

>>> import struct
>>> print struct.pack('BB', 48, 51)
03
>>> print '\x30\x33'
03
>>> '\x30\x33' == '03'
True
Run Code Online (Sandbox Code Playgroud)

'\x30\x33'并且'03'是同一事物的不同表示。
'\x30\x33'由它们的十六进制值和'03'ASCII 字符定义。

最后,它们都是一个包含两个字节 48 (0x30) 和 51 (0x33) 的数组。

传感器只接受十六进制值

Sensor 只接受字节,这取决于您需要如何对值进行编码。
您需要发送数字 3 还是字符串“03”?

如果是数字,则需要发送"\x03"pack("B", 3)
如果它是一个字符串,你只需要发送"03".