【问题标题】:Python integer to hex string with paddingPython整数到带有填充的十六进制字符串
【发布时间】:2017-02-28 15:38:23
【问题描述】:

考虑一个整数 2。我想将它转换为十六进制字符串 '0x02'。通过使用python的内置函数hex(),我可以获得不适合我的代码的'0x2'。谁能告诉我如何以方便的方式获得我想要的东西?谢谢你。

【问题讨论】:

  • 您的描述不清楚。如果 2 将是 0x02,那么 20 怎么样?应该是 0x014 吗?

标签: python hex


【解决方案1】:
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
【解决方案2】:

对于可能非常大的整数:

integer = 2
hex = integer.to_bytes(((integer.bit_length() + 7) // 8),"big").hex()

“big”指的是“big endian”...导致字符串在视觉上与人类期望的一样对齐。

如果需要,您可以在前面粘贴“0x”。

hex = "0x" + hex

【讨论】:

  • 小括号错误。应该是 hex = integer.to_bytes(((integer.bit_length() + 7) // 8),"big").hex()
  • 请提一下,您的解决方案仅适用于 python3:'int' 对象没有属性 'to_bytes'。
【解决方案3】:
>>> integer = 2
>>> hex_string = format(integer, '#04x')  # add 2 to field width for 0x
>>> hex_string
'0x02'

Format Specification Mini-Language

【讨论】:

    猜你喜欢
    • 2011-10-07
    • 2016-04-22
    • 2013-08-05
    • 2017-08-07
    • 1970-01-01
    • 2013-04-28
    • 2013-10-22
    • 2021-03-07
    • 2013-09-06
    相关资源
    最近更新 更多