繁体   English   中英

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'。 有没有办法将这两个字符转换为“十六进制二进制”?

'\\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"

如果不需要使用pack,则可以使用以下内容:

'\\'+hex(48)[1:]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM