Python преобразовать int в шестнадцатеричную строку с четным количеством символов - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу преобразовать произвольное целое число в шестнадцатеричную строку с четным числом шестнадцатеричных символов. т.е. каждая последовательная пара символов в строке представляет байт целого числа (в старшем порядке).

Таким образом, шестнадцатеричная строка должна начинаться с нулевого символа, если это необходимо для создания четного числа символов.

Поскольку целое число произвольно, я заранее не знаю длину шестнадцатеричной строки. Есть много других вопросов о том, как добавить начальные нули, но все они предполагают, что я знаю длину желаемой шестнадцатеричной строки. Я нигде не нашел дубликат этого конкретного c вопроса.

Я счастлив использовать Python 3.8.

Я пробовал следующее:

i = 1000  # required output is '03e8'. i could be much larger or smaller

f"{i:02x}"             # '3e8'
f"{i:0>2x}"            # '3e8'
f"{i:x}".zfill(2)      # '3e8' 
"0" + f"{i:x}" if len(f"{i:x}") % 2 else f"{i:x}"  # '03e8' as required, but really?!

Нет ли краткого способа сделать это с помощью спецификаторов формата?

...