Python 强制str.format()在显示十六进制时使用两位数字
我有以下代码行:Python 强制str.format()在显示十六进制时使用两位数字,python,format,Python,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:整数格式
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:整数格式说明符中不允许精度
如何强制十六进制始终显示两位数字?您可以使用#04x
将输出填充为带有0x
前缀的两位数字,然后再次格式化以适合您的6个字符宽度:
print format(format(val, '#04x'), '^6'),
我使用了,因为你没有插入到一个更大的字符串
由于现在字段的宽度将为4个字符,因此您也可以使用字符串格式对两个空格填充进行硬编码:
print ' {:#04x} '.format(val),
演示:
>>> format(3, '#04x')
'0x03'
>>> format(format(3, '#04x'), '^6')
' 0x03 '
>>> ' {:#04x} '.format(3)
' 0x03 '