python bytearray中的“&”代表什么

时间:2019-02-01 14:35:21

标签: python arrays python-3.x

在蟒蛇&的末尾,与号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,但没有找到答案。谢谢!

1 个答案:

答案 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