2024-05-13 09:56:04 发布
网友
我使用网页获取十六进制数据,用python编写串行modbus
问题是字符串中的0A被转换为\n
0A
\n
如何阻止这种情况发生
rList = r'0106000600000AE9CC' arr=str(rList) arr = bytes.fromhex(rList) print(arr)
输出:
b'\x01\x06\x00\x06\x00\x00\n\xe9\xcc'
字符串前面的b符号表示您有一个字节列表。在打印时,python会尽可能地对字节进行解码,以便于用符号表示它们
b
字节b'\x0A'对应于十进制值10,它是一个newline symbol in ascii。这就是为什么要打印这个符号
b'\x0A'
在引擎盖下,您的字节b'\x0A'没有被更改
试试这个
def print_me(thing: bytes): print(''.join( f'\\x{byte:02x}' for byte in thing )) print_me(bytes.fromhex("0106000600000AE9CC"))
\x01\x06\x00\x06\x00\x00\x0a\xe9\xcc
字节对象的repr()表示形式尽可能使用ASCII码点。 这意味着\x0A将显示为\n,因为这是换行符的ASCII码点
\x0A
更多示例:\x55将显示为U,\x5A将显示为Z,\x0D将显示为\r,你明白了
\x55
U
\x5A
Z
\x0D
\r
然而,引擎盖下的数据仍然是相同的
不要担心Python控制台如何显示输出字符串——处理其内容可能更重要
字符串前面的
b
符号表示您有一个字节列表。在打印时,python会尽可能地对字节进行解码,以便于用符号表示它们字节
b'\x0A'
对应于十进制值10,它是一个newline symbol in ascii。这就是为什么要打印这个符号在引擎盖下,您的字节
b'\x0A'
没有被更改试试这个
输出:
字节对象的repr()表示形式尽可能使用ASCII码点。 这意味着
\x0A
将显示为\n
,因为这是换行符的ASCII码点更多示例:
\x55
将显示为U
,\x5A
将显示为Z
,\x0D
将显示为\r
,你明白了
然而,引擎盖下的数据仍然是相同的
不要担心Python控制台如何显示输出字符串——处理其内容可能更重要
相关问题 更多 >
编程相关推荐