2014-10-08 60 views
0

当使用蟒结构包显示ASCII

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

输出为'y\x19',当我预期'\x79\x19'。我知道\ x79是ASCII中的y,但信息是一样的吗?为什么一个字节会影响另一个字节?我正在尝试发送一个modbus命令,并且想知道是否会导致通信问题。我是modbus新手,在诊断为什么从站不响应主站时遇到问题。

+0

信息是一样的,Python的'repr()'输出只显示可打印的ASCII字符。 – 2014-10-08 18:51:38

回答

1

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

Python字符串内容使用ASCII文本分别是可印刷,\r,为ASCII回车,换行和制表符\n\t,和\xhh六角逸出的其余任何字符显示。

是的,'\x79'是完全相同的字节作为'y'

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

但产生表示时,巨蟒只是喜欢向你展示了可打印的ASCII字符:

>>> '\x79' 
'y' 

你可以编码如果要查看全部以十六进制表示的码点:

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

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