我对struct module和pack方法有一个问题(可能在理解中)。我需要打包消息与传感器通信。此消息的一个值是整数的ascii表示(在本例中为“0”和“3”),即48和51.传感器仅接受十六进制值(在本例中为30和33)。但是当我使用pack('BB',48,51)
时,它会给我'\ x0003',但我需要'\ x30 \ x33'。有没有办法将这两个字符转换为“hex-binaries”?
答案 0 :(得分:3)
'\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)的数组。
传感器仅接受十六进制值
传感器只接受字节,这取决于您需要如何编码值 您需要发送3号或字符串" 03"?
如果是号码,您需要发送"\x03"
或pack("B", 3)
。
如果它是一个字符串,您只需发送"03"
。
答案 1 :(得分:0)
如果使用pack不是必须的,你可以使用这样的东西:
'\\'+hex(48)[1:]