Python 将字符串打包为 ascii 十六进制值
Python pack string as ascii hex value
我对 struct 模块和 pack 方法有疑问(可能在理解上)。我需要打包一条消息以与传感器通信。此消息的一个值是整数的 ascii 表示(在本例中为“0”和“3”),即 48 和 51。传感器仅接受十六进制值(在本例中为 30 和 33)。但是当我使用 pack('BB',48,51)
时,它会返回 '\x0003' 但我需要 '\x30\x33'。有没有办法将这两个字符转换为 "hex-binaries"?
'\x30\x33'
等同于 '03'
>>> import struct
>>> print struct.pack('BB', 48, 51)
03
>>> print '\x30\x33'
03
>>> '\x30\x33' == '03'
True
'\x30\x33'
和 '03'
是同一事物的不同表示。
'\x30\x33'
由它们的十六进制值定义,'03'
由 ASCII 字符定义。
最后都是一个48(0x30)和51(0x33)两个字节的数组。
The sensor only accepts hex values
传感器只接受字节,这取决于您需要如何对值进行编码。
您需要发送数字 3 还是字符串“03”?
如果是数字,您需要发送 "\x03"
或 pack("B", 3)
。
如果它是一个字符串,你只需要发送 "03"
.
如果不需要pack,可以这样使用:
'\'+hex(48)[1:]
我对 struct 模块和 pack 方法有疑问(可能在理解上)。我需要打包一条消息以与传感器通信。此消息的一个值是整数的 ascii 表示(在本例中为“0”和“3”),即 48 和 51。传感器仅接受十六进制值(在本例中为 30 和 33)。但是当我使用 pack('BB',48,51)
时,它会返回 '\x0003' 但我需要 '\x30\x33'。有没有办法将这两个字符转换为 "hex-binaries"?
'\x30\x33'
等同于 '03'
>>> import struct
>>> print struct.pack('BB', 48, 51)
03
>>> print '\x30\x33'
03
>>> '\x30\x33' == '03'
True
'\x30\x33'
和 '03'
是同一事物的不同表示。
'\x30\x33'
由它们的十六进制值定义,'03'
由 ASCII 字符定义。
最后都是一个48(0x30)和51(0x33)两个字节的数组。
The sensor only accepts hex values
传感器只接受字节,这取决于您需要如何对值进行编码。
您需要发送数字 3 还是字符串“03”?
如果是数字,您需要发送 "\x03"
或 pack("B", 3)
。
如果它是一个字符串,你只需要发送 "03"
.
如果不需要pack,可以这样使用:
'\'+hex(48)[1:]