>>> bytearray([2,88])
bytearray(b'\x02X')
为什么bytearray()将它们组合在一起?为何将88转换为ASCII(X)?我原本期望两个单独的值,然后将88转换为十六进制(x58)
bytearray(b'\x02,x58)
答案 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