使用时
import struct
struct.pack(">H",31001)
当我预期'y\x19'
时,输出为'\x79\x19'
。我知道\ x79是ASCII格式,但信息是否相同?为什么一个字节受影响而另一个字节不受影响?我正在尝试发送一个modbus命令,我想知道这是否会导致通信问题。我是modbus的新手,我很难诊断奴隶为什么不回应主人。
答案 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字符而另一个是不是。