在Python v2.6中,我可以通过以下两种方式之一获取整数的十六进制:
print(("0x%x")%value)
print(hex(value))
但是,在这两种情况下,十六进制数字都是小写。如何以大写字母获取这些内容?
Capital X(使用sprintf-style formatting的Python 2和3):
print("0x%X" % value)
或者在python 3+中(使用.format
string syntax):
print("0x{:X}".format(value))
或者在python 3.6+中(使用formatted string literals):
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时代:只需在格式部分中使用'X',在f-strings中:
print(f"{255:X}")
(f-strings接受:
之前的任何有效Python表达式 - 包括直接数字表达式和变量名称)。
使用f-strings的Python 3习语越多:
value = 1234
print(f'0x{value:X}')
'0x4D2'
注释(以及为什么这不重复):
f'{value}'
;实际上没有人将十六进制文字放在实际代码中。插值有很多陷阱:它不是f'{x:value}'
,也不是f'{0x:value}'
,也不是f'{value:0x}'
,甚至也不是f'{value:%x}'
,我也尝试过。有很多方法可以绊倒。在重读了四个教程和whatsnew文档以获取语法之后,我仍然需要15分钟的反复试验。这个答案显示了如何正确获得f-string变量插值;别人不这样做。