python结构包显示ascii

2024-06-16 10:09:27 发布

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

使用时

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

输出是'y\x19',而我期望的是'\x79\x19'。我知道\x79在ASCII中是y,但是信息是相同的吗?为什么一个字节受到影响而另一个字节没有受到影响?我试图发送一个modbus命令,我想知道这是否导致了通信问题。我刚接触modbus,很难诊断为什么从站不响应主机。在


Tags: import命令信息字节asciistructpackmodbus
2条回答

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

Python字符串内容使用ASCIItext显示,对于任何可打印字符,\r\n和{}分别表示ASCII回车符、换行符和制表符,其余字符使用\xhh十六进制转义符。在

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

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

但在生成表示时,Python只希望显示可打印的ASCII字符:

^{pr2}$

如果要查看以十六进制表示的所有代码点,可以将字符串编码为'hex'

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

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

相关问题 更多 >