Отображение bytearray в удобочитаемом шестнадцатеричном формате

#python #arrays #python-3.x

Вопрос:

Если у меня есть массив байтов

 aaa=b'x02xc0x00x48x04'
 

и я хочу отобразить его в шестнадцатеричном формате, он будет отображать байты в виде

 b'x02xc0x00Hx04'
 

который представляет собой смесь шестнадцатеричных и ASCII-символов. Это не очень удобно читать, когда массив слишком велик.

Команда, которую я использую, такова

 print(' '.join(hex(n) for n in aaa))
 

На выходе получается

 0x2 0xc0 0x0 0x48 0x4
 

Это все еще отличается от моего идеального представления:

 02 C0 00 48 04
 

Как я могу этого достичь?

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

1. Один из вариантов: " ".join(f"{a:02X}" for a in aaa)

2. @JohnnyMopp, да, это работает

3. другой вариант aaa.hex(' ').upper()

Ответ №1:

Спасибо @furas. Решение заключается в следующем

 aaa.hex(' ').upper()
 

В результате будет

 '02 C0 00 48 04'
 

Ответ №2:

Вы можете отформатировать строки:

 ' '.join(f'{:02X}' for n in aaa)