Python,Printing Hex首先删除0?

时间:2013-04-08 16:52:15

标签: python hex

看看这个:

fc = '0x'
for i in b[0x15c:0x15f]:
    fc += hex(ord(i))[2:]

让我们说这段代码找到了十六进制00 04 0f,而不是那样写,它删除了第一个0,并写道:04f 有什么帮助吗?

4 个答案:

答案 0 :(得分:21)

这种情况正在发生,因为hex()不会包含任何前导零,例如:

>>> hex(15)[2:]
'f'

为了确保您始终获得两个字符,您可以在必要时使用str.zfill()添加前导零:

>>> hex(15)[2:].zfill(2)
'0f'

以下是代码中的内容:

fc = '0x'
for i in b[0x15c:0x15f]:
    fc += hex(ord(i))[2:].zfill(2)

答案 1 :(得分:14)

>>> map("{:02x}".format, (10, 13, 15))
['0a', '0d', '0f']

答案 2 :(得分:2)

print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]]

使用格式字符串"%2x"告诉它将其格式化为2个字符宽,同样"%02x"告诉它填充0的​​

请注意,这仍将从超过2个十六进制值的内容中删除前导0 例如:"0x%02x"%0x0055 => "0x55"

答案 3 :(得分:0)

为方便起见,它仍然只是一个图形表示 该值实际上并未从数据中删除,只是在视觉上缩短了。

此处有完整说明及其原因或为何不重要:Why are hexadecimal numbers prefixed with 0x?