为什么ByteArray()合并数组值? (蟒蛇)

时间:2018-12-02 23:05:52

标签: python arrays hex byte ascii

>>> bytearray([2,88])
bytearray(b'\x02X')

为什么bytearray()将它们组合在一起?为何将88转换为ASCII(X)?我原本期望两个单独的值,然后将88转换为十六进制(x58)

bytearray(b'\x02,x58)

1 个答案:

答案 0 :(得分:0)

因为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
相关问题