Как я могу заставить 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; другие-нет.