21

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

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

但是,在这两种情况下,十六进制数字都是小写的。我怎样才能得到这些大写?

4

5 回答 5

32

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

print("0x%X" % value)

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

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

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

print(f"0x{value:X}")
于 2012-11-07T20:14:49.333 回答
6

只需使用上()。

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

输出:

Upper hexadecimal number =  0X4D2
于 2015-06-02T06:21:00.130 回答
5

通过使用大写%X

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

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

print(f"{255:X}")

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

于 2012-11-07T21:45:52.900 回答
4

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

正确处理负数。

于 2020-02-22T12:00:10.503 回答
2

使用 f-strings 的更多 Python 3 习惯用法是:

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

注释(以及为什么这不是重复的):

  • 展示了如何避免大写“0x”前缀,这是其他答案中的一个问题
  • 显示如何获得变量插值 f'{value}';实际上没有人将(硬编码)十六进制文字放入实际代码中。做变量插值有很多陷阱:不是f'{x:value}'也不f'{0x:value}'f'{value:0x}',甚至f'{value:%x}'我也尝试过。绊倒的方法有很多。在重新阅读了四个教程和 whatsnew 文档后,我仍然花了 15 分钟的反复试验来获得语法。这个答案显示了如何正确获得 f 字符串变量插值;其他人没有。
于 2018-09-06T22:59:03.473 回答