#python #arrays #python-3.x #hex
#python #массивы #python-3.x #шестнадцатеричное
Вопрос:
Я пытаюсь преобразовать шестнадцатеричный ввод в bytearray. В принципе, я пытался:
-
bytearray.fromhex('e832')
-
преобразование в целые числа:
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'