Как я могу заставить Python использовать буквы верхнего регистра при печати шестнадцатеричных значений?

в Python версии 2.6 я могу получить шестнадцатеричное для моих чисел одним из двух способов:

print(("0x%x")%value)
print(hex(value))

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

4 ответов


Capital X (Python 2 и 3 с помощью форматирование в стиле sprintf):

print("0x%X" % value)

или в python 3+ (используя .format синтаксис строки):

print("0x{:X}".format(value))

или в python 3.6+ (используя форматированные строковые литералы):

print(f"0x{value:X}")

просто используйте upper ().

intNum = 1234
hexNum = hex(intNum).upper()
print('Upper hexadecimal number = ', hexNum)

выход:

Upper hexadecimal number =  0X4D2

С помощью верхнего регистра %X:

>>> print("%X" % 255)
FF

обновление для Python 3.6 era: просто используйте " X " в части формата, внутри f-строк:

print(f"{255:X}")

(f-строки принимают любое допустимое выражение Python перед : - включая прямые числовые выражения и имена переменных).


более Python 3 идиома с использованием f-строк будет:

value = 1234
print(f'0x{value:X}')
'0x4D2'

нот (и почему это не дубликат):

  • показано, как избегайте заглавной буквы префикса "0x", что было проблемой в других ответах
  • показывает как получить переменную интерполяцию f'{value}'; никто никогда не помещает шестнадцатеричные литералы в реальный код. В интерполяции есть много подводных камней: это не f'{x:value}', ни f'{0x:value}', ни f'{value:0x}' ни даже f'{value:%x}' как я и пытался. Так много способов споткнуться. Мне все еще потребовалось 15 минут проб и ошибок после перечитывания четырех учебников и документов whatsnew, чтобы получить синтаксис. Этот ответ показывает, как правильно получить интерполяцию переменной f-string; другие-нет.