【发布时间】:2019-05-04 06:13:52
【问题描述】:
>>> bytearray([2,88])
bytearray(b'\x02X')
为什么 bytearray() 将它们结合起来?为什么将 88 变成 ascii (X)?我期待两个单独的值,88 转换为十六进制(x58)
bytearray(b'\x02,x58)
【问题讨论】:
标签: python arrays hex byte ascii
>>> bytearray([2,88])
bytearray(b'\x02X')
为什么 bytearray() 将它们结合起来?为什么将 88 变成 ascii (X)?我期待两个单独的值,88 转换为十六进制(x58)
bytearray(b'\x02,x58)
【问题讨论】:
标签: python arrays hex byte ascii
因为 ASCII 88(大写字母 X)是可打印的,而 bytes.str() / bytes.repr() 的行为是不对可打印字符进行编码。
尝试打印bytearray(range(256)),您会发现有一系列可打印字符(从\x20 到\x7e)不会显示为\x##。
不过,您可以按字节序列输入\x58,但它会再次显示为X:
>>> b'\x58'
b'X'
这是打印所有编码为\x## 形式的值的小技巧:
>>> b = bytearray([2,88])
>>> print(''.join('\\x%02x'%x for x in b))
\x02\x58
【讨论】: