Python十六进制

83 投票
3 回答
282767 浏览
提问于 2025-04-17 14:38

如何把十进制数转换成十六进制格式(至少两位数字,不足的用零填充,且不带0x前缀)?

输入:255 输出:ff

输入:2 输出:02

我试过用hex(int)[2:],但好像只显示了第一个例子,而第二个没有。

3 个回答

-8

另一种解决方案是:

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

这可能是个老旧的答案,但还是能用。

26

我觉得这就是你想要的:

>>> def twoDigitHex( number ):
...     return '%02x' % number
... 
>>> twoDigitHex( 2 )
'02'
>>> twoDigitHex( 255 )
'ff'
162

使用 format() 函数,并且用 '02x' 这种格式。

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

这里的 02 意思是告诉 format() 至少要用2位数字,如果不够就用0来填充,而 x 则表示要输出小写的十六进制数。

还有一个叫 格式规范迷你语言 的东西,它提供了 X 用于输出大写的十六进制数。如果你想在数字前面加上 0x0X 的前缀(这取决于你用的是 x 还是 X),可以在字段宽度前加上 #。不过要记得,这样的话你需要调整字段宽度,以便留出这两个额外的字符:

>>> format(255, '02X')
'FF'
>>> format(255, '#04x')
'0xff'
>>> format(255, '#04X')
'0XFF'

撰写回答