79

如何以以下格式将十进制转换为十六进制(至少两位,零填充,不带 0x 前缀)?

输入:255 输出:ff

输入:2 输出:02

我试过hex(int)[2:]了,但它似乎显示了第一个例子而不是第二个例子。

4

3 回答 3

154

使用带有格式的format()函数。'02x'

>>> format(255, '02x')
'ff'
>>> format(2, '02x')
'02'

02部分告诉format()使用至少 2 位数字并使用零将其填充到长度,x表示小写十六进制。

格式规范迷你语言还为您提供X了大写十六进制输出,您可以在字段宽度#前加上0xor0X前缀(取决于您使用xX作为格式化程序)。只需考虑您需要调整字段宽度以允许额外的 2 个字符:

>>> format(255, '02X')
'FF'
>>> format(255, '#04x')
'0xff'
>>> format(255, '#04X')
'0XFF'
于 2013-02-03T22:34:37.503 回答
25

我认为这就是你想要的:

>>> def twoDigitHex( number ):
...     return '%02x' % number
... 
>>> twoDigitHex( 2 )
'02'
>>> twoDigitHex( 255 )
'ff'
于 2013-02-03T22:58:20.570 回答
-8

另一种解决方案是:

>>> "".join(list(hex(255))[2:])
'ff'

可能是一个古老的答案,但很实用。

于 2014-10-01T18:47:41.340 回答