Делаем гекс в питоне до полного байта - PullRequest
0 голосов
/ 26 октября 2019

Есть ли способ заставить python печатать четное количество байтов при форматировании в hex? Например:

>>> hex(12)
'0xc'
>>> f'{12:#x}'
'0xc'
>>> f'{12:#X}'
'0XC'
>>> f'{12:X}'
'C'
>>> f'{12:x}'
'c'

Кроме того, есть ли в python форматированный формат, который будет разделять байты, когда их несколько? Например:

>>> hex(1000)
'0x3e8' # 0e e8

Или мне нужно для этого создать свой собственный форматер?

1 Ответ

1 голос
/ 26 октября 2019

Вы можете форматировать шестнадцатеричные значения фиксированной длины в строке, используя спецификатор формата ...

  • 0 - с добавлением 0 *
  • 4 - количество цифр
  • x - шестнадцатеричное значение

примерно так:

 '{:04x}'.format(12)

, который возвращает:

'000c'

AFAIK, вам понадобится функция пользовательского формата длягруппировать по позиции. Может быть, что-то вроде этого:

hex_value = '0123456789abcdef'
' '.join(hex_value[i: i + 2] for i in range(0, len(hex_value), 2))

, который вернется:

'01 23 45 67 89 ab cd ef'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...