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

2024-10-01 15:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块方法信息消息ascii整数传感器struct
2条回答

'\x30\x33'与{}相同

>>> import struct
>>> print struct.pack('BB', 48, 51)
03
>>> print '\x30\x33'
03
>>> '\x30\x33' == '03'
True

'\x30\x33'和{}是同一事物的不同表示。
'\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:]

相关问题 更多 >

    热门问题