Целое число Python в шестнадцатеричную строку с заполнением

#python #hex

#python #шестнадцатеричное

Вопрос:

Рассмотрим целое число 2. Я хочу преобразовать его в шестнадцатеричную строку ‘0x02’. Используя встроенную функцию Python hex() , я могу получить ‘0x2’, который не подходит для моего кода. Кто-нибудь может показать мне, как получить то, что я хочу, удобным способом? Спасибо.

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

1. Ваше описание неясно. Если 2 будет 0x02, как насчет 20? Должно ли это быть 0x014?

Ответ №1:

 integer = 2
hex_string = '0x{:02x}'.format(integer)
  

Смотрите pep 3101, особенно стандартные спецификаторы формата для получения дополнительной информации.

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

1. Вы можете опустить 0x и поставить # на первое место строки формата: '{:#02x}'.format(integer) . «этот параметр добавляет соответствующий префикс ‘0b’, ‘0o’ или ‘0x’ к выходному значению» (из docs.python.org/3.7/library/string.html )

Ответ №2:

Для целых чисел, которые могут быть очень большими:

 integer = 2
hex = integer.to_bytes(((integer.bit_length()   7) // 8),"big").hex()
  

«Большой» относится к «большому порядковому номеру»… в результате получается строка, которая визуально выровнена так, как ожидал бы человек.

Затем вы можете вставить «0x» спереди, если хотите.

 hex = "0x"   hex
  

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

1. незначительная ошибка при заключении в квадратные скобки. Должно быть шестнадцатеричным = integer.to_bytes(((integer.bit_length() 7) // 8),» большой»).hex()

2. Пожалуйста, обратите внимание, что ваше решение предназначено только для python3: объект ‘int’ не имеет атрибута ‘to_bytes’.

Ответ №3:

 >>> integer = 2
>>> hex_string = format(integer, '#04x')  # add 2 to field width for 0x
>>> hex_string
'0x02'
  

Смотрите Спецификацию формата мини-языка