在蟒蛇&
的末尾,与号bytearray
是什么意思?
例如:
x_w = bytearray(b'\x00\x00\x04\x12\xaa\x12\x12&')
通过
将其转换为整数时int.from_bytes(x_w, 'little')
Out[1]: 2743275644678045696
与没有'&'的同一个字节数组给出不同的结果:
x_wo = bytearray(b'\x00\x00\x04\x12\xaa\x12\x12')
int.from_bytes(x_wo, 'little')
Out[2]: 5087071236784128
我检查了documentation,但没有找到答案。谢谢!
答案 0 :(得分:7)
它只是值26
(十进制38)的字节表示形式,它是ASCII中的'&'
字符。
如果您打印所使用的字节文字的实际字节值,则可以清楚地看到这一点:
>>> print(' '.join('%02x' % b for b in b'\x00\x00\x04\x12\xaa\x12\x12&'))
00 00 04 12 aa 12 12 26
repr
对象的bytearray
倾向于使用ASCII字符表示字节,而不是尽可能使用十六进制转义符。因此,即使它们在技术上是等效的,它也会首选表示形式'&'
而不是'\x26'
:
>>> bytearray([0x00, 0x00, 0x04, 0x12, 0xAA, 0x12, 0x12, 0x26])
bytearray(b'\x00\x00\x04\x12\xaa\x12\x12&')
>>> b'\x26' == b'&'
True