强制str.format()以两位数显示十六进制数

0 投票
1 回答
845 浏览
提问于 2025-04-18 18:47

我有以下这行代码:

print "{: ^#6x}".format(val),

这段代码(部分内容)会输出如下结果:

0x1    0x0    0x0    0x0
0x3    0xb2   0x0    0x0
0x3    0x0    0x3    0x0
0x2b   0x0    0x0    0x0
0xb    0x0    0xb    0x0
0x20   0x0    0x0    0x0

这看起来都很好,但为了让输出对齐并且更美观,我想让十六进制数字都显示为两位数,也就是像这样 0x00。但是,当我尝试在格式说明符中添加精度,比如 {: ^#6.2x},就出现了错误:

ValueError: 精度在整数格式说明符中不被允许

我该如何让十六进制数字始终显示为两位数呢?

1 个回答

0

你可以使用 #04x 这个格式来输出两位数字,并加上 0x 的前缀,然后再调整格式,使它符合6个字符的宽度:

print format(format(val, '#04x'), '^6'),

我使用了 format() 函数,因为你并不是在把它放进一个更大的字符串里。

现在这个字段的宽度总是4个字符,你也可以直接在字符串格式中写死两个空格来进行填充:

print ' {:#04x} '.format(val),

示例:

>>> format(3, '#04x')
'0x03'
>>> format(format(3, '#04x'), '^6')
' 0x03 '
>>> ' {:#04x} '.format(3)
' 0x03 '

撰写回答