python struct pack显示ascii

时间:2014-10-08 18:50:35

标签: python struct

使用时

import struct
struct.pack(">H",31001)

当我预期'y\x19'时,输出为'\x79\x19'。我知道\ x79是ASCII格式,但信息是否相同?为什么一个字节受影响而另一个字节不受影响?我正在尝试发送一个modbus命令,我想知道这是否会导致通信问题。我是modbus的新手,我很难诊断奴隶为什么不回应主人。

2 个答案:

答案 0 :(得分:1)

您正在查看repr()函数的结果,Python交互式解释器在非None的所有结果上使用该函数。

对于任何可打印的字符,使用ASCII text 显示Python字符串内容,\r\n\t用于ASCII回车,换行符和制表符字符分别为\xhh十六进制转义。

是的,'\x79''y'完全相同:

>>> 'y' == '\x79'
True

但是在生成表示时,Python只是更喜欢向您显示可打印的ASCII字符:

>>> '\x79'
'y'

如果您希望将所有代码点表示为十六进制,则可以将字符串编码为'hex'

>>> 'y\x19'.encode('hex')
'7919'

答案 1 :(得分:0)

是的,信息是一样的。结构是一个字节序列,可打印字节显示为它们所代表的字符。一个是以转义形式显示的原因而另一个是不是一个是可打印的ASCII字符而另一个是不是。