如何在打印十六进制值时让Python使用大写字母?

Wil*_*mKF 17 python formatting hex uppercase

在Python v2.6中,我可以通过以下两种方式之一获取整数的十六进制:

print(("0x%x")%value)
print(hex(value))
Run Code Online (Sandbox Code Playgroud)

但是,在这两种情况下,十六进制数字都是小写.如何以大写字母获取这些内容?

Eri*_*ric 22

Capital X(使用sprintf样式格式的 Python 2和3 ):

print("0x%X" % value)
Run Code Online (Sandbox Code Playgroud)

或者在python 3+中(使用.format字符串语法):

print("0x{:X}".format(value))
Run Code Online (Sandbox Code Playgroud)

或者在python 3.6+中(使用格式化的字符串文字):

print(f"0x{value:X}")
Run Code Online (Sandbox Code Playgroud)

  • 有关使用 f 字符串的更多 Python 3 习惯用法,请参阅我的答案:`print(f'0x{value:X}')` (2认同)

Sim*_*olm 9

print(hex(value).upper().replace('X', 'x'))

正确处理负数。


小智 6

只需使用upper().

intNum = 1234
hexNum = hex(intNum).upper()
print('Upper hexadecimal number = ', hexNum)
Run Code Online (Sandbox Code Playgroud)

输出:

Upper hexadecimal number =  0X4D2
Run Code Online (Sandbox Code Playgroud)

  • 但我不认为"0X4D2"是正确的表示法.它应该是"0x4D2"(小写"x"). (2认同)
  • “%X”是最好的。@PeterMortensen 是正确的。这样,你就需要一些笨重的东西,比如 `''.join([ '0x', hex(value).upper()[2:] ])` (2认同)

jsb*_*eno 5

通过使用大写%X

>>> print("%X" % 255)
FF
Run Code Online (Sandbox Code Playgroud)

更新 Python 3.6 时代:只需在格式部分中使用“X”,在 f-strings 中:

print(f"{255:X}")
Run Code Online (Sandbox Code Playgroud)

(f-strings 在:-之前接受任何有效的 Python 表达式,包括直接数字表达式和变量名称)。