Почему ByteArray () объединяет значения массива?(Python) - PullRequest
0 голосов
/ 03 декабря 2018
>>> bytearray([2,88])
bytearray(b'\x02X')

Почему bytearray () объединяет их?И почему он превращает 88 в ASCII (X)?Я ожидал, что два отдельных значения и 88 будут преобразованы в шестнадцатеричные (x58)

bytearray(b'\x02,x58)

1 Ответ

0 голосов
/ 03 декабря 2018

Поскольку 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
...