【发布时间】:2017-02-28 15:38:23
【问题描述】:
考虑一个整数 2。我想将它转换为十六进制字符串 '0x02'。通过使用python的内置函数hex(),我可以获得不适合我的代码的'0x2'。谁能告诉我如何以方便的方式获得我想要的东西?谢谢你。
【问题讨论】:
-
您的描述不清楚。如果 2 将是 0x02,那么 20 怎么样?应该是 0x014 吗?
考虑一个整数 2。我想将它转换为十六进制字符串 '0x02'。通过使用python的内置函数hex(),我可以获得不适合我的代码的'0x2'。谁能告诉我如何以方便的方式获得我想要的东西?谢谢你。
【问题讨论】:
integer = 2
hex_string = '0x{:02x}'.format(integer)
请参阅pep 3101,尤其是标准格式说明符了解更多信息。
【讨论】:
0x,并将# 放在格式字符串的首位:'{:#02x}'.format(integer)。 “此选项将前缀分别添加 '0b'、'0o' 或 '0x' 到输出值”(来自docs.python.org/3.7/library/string.html)
对于可能非常大的整数:
integer = 2
hex = integer.to_bytes(((integer.bit_length() + 7) // 8),"big").hex()
“big”指的是“big endian”...导致字符串在视觉上与人类期望的一样对齐。
如果需要,您可以在前面粘贴“0x”。
hex = "0x" + hex
【讨论】:
>>> integer = 2
>>> hex_string = format(integer, '#04x') # add 2 to field width for 0x
>>> hex_string
'0x02'
【讨论】: