当使用蟒结构包显示ASCII
import struct
struct.pack(">H",31001)
输出为'y\x19'
,当我预期'\x79\x19'
。我知道\ x79是ASCII中的y,但信息是一样的吗?为什么一个字节会影响另一个字节?我正在尝试发送一个modbus命令,并且想知道是否会导致通信问题。我是modbus新手,在诊断为什么从站不响应主站时遇到问题。
当使用蟒结构包显示ASCII
import struct
struct.pack(">H",31001)
输出为'y\x19'
,当我预期'\x79\x19'
。我知道\ x79是ASCII中的y,但信息是一样的吗?为什么一个字节会影响另一个字节?我正在尝试发送一个modbus命令,并且想知道是否会导致通信问题。我是modbus新手,在诊断为什么从站不响应主站时遇到问题。
您正在查看repr()
函数的结果,Python交互式解释器在所有不是None
的结果上使用该函数。
Python字符串内容使用ASCII文本为分别是可印刷,\r
,为ASCII回车,换行和制表符\n
和\t
,和\xhh
六角逸出的其余任何字符显示。
是的,'\x79'
是完全相同的字节作为'y'
:
>>> 'y' == '\x79'
True
但产生表示时,巨蟒只是喜欢向你展示了可打印的ASCII字符:
>>> '\x79'
'y'
你可以编码如果要查看全部以十六进制表示的码点:
>>> 'y\x19'.encode('hex')
'7919'
是的,信息是一样的。该结构是一个字节序列,可打印字节显示为它们所代表的字符。原因之一是在转义形式中显示,另一种不是一个是可打印的ASCII字符,另一个不是。
信息是一样的,Python的'repr()'输出只显示可打印的ASCII字符。 – 2014-10-08 18:51:38