Почему bytearray() возвращает значение больше одного байта?

#python #arrays #python-3.x #hex

#python #массивы #python-3.x #шестнадцатеричное

Вопрос:

Я пытаюсь преобразовать шестнадцатеричный ввод в bytearray. В принципе, я пытался:

  1. bytearray.fromhex('e832')

  2. преобразование в целые числа: bytearray([232, 50]) которые возвращают следующее:

    bytearray(b'xe82')

вместо того, что я ожидал (и должен выглядеть вывод):

 bytearray(b'xe8x32')
  

Почему это? Не xe82 больше max для одного байта?

использование bytes() делает то же самое.

(Python 3.8.1)

Комментарии:

1. Python использует x экранирование только для символов, которые не доступны для печати в формате ASCII. Шестнадцатеричное 32 число эквивалентно десятичному 50 , что соответствует символу ASCII «2». Таким образом, вывод правильный и точно такой, как ожидалось.

2. ага, понятно. Есть ли какой-либо способ заставить bytearray выводить только известные вам шестнадцатеричные значения, просто для лучшей читаемости?

3. Нет, просто так repr работает. Если вы хотите увидеть десятичные значения каждого байта, вы можете сделать list(b'xe82') => [232, 50] . Или, если вы используете Python >= 3.5, вы можете сделать b'xe82'.hex(' ') => 'e8 32' .

4. IOW: b'x32' == b'2'