强制str.format()以两位数显示十六进制数
我有以下这行代码:
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 '