'&'在python bytearray中代表什么?

geh*_*eis 2 python arrays python-3.x

&在蟒蛇结束时,&符号是什么意思bytearray

例如:

x_w = bytearray(b'\x00\x00\x04\x12\xaa\x12\x12&')
Run Code Online (Sandbox Code Playgroud)

将此转换为整数时

int.from_bytes(x_w, 'little')

Out[1]: 2743275644678045696
Run Code Online (Sandbox Code Playgroud)

它给出了不带'&'的相同bytearray的不同结果:

x_wo = bytearray(b'\x00\x00\x04\x12\xaa\x12\x12')
int.from_bytes(x_wo, 'little')

Out[2]: 5087071236784128
Run Code Online (Sandbox Code Playgroud)

我检查了文档,但没有找到答案.谢谢!

Dan*_*den 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)