Python,打印十六进制删除第一个0?

2024-03-29 14:47:10 发布

您现在位置:Python中文网/ 问答频道 /正文

看看这个:

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

假设这段代码找到了hex0040f,而不是那样写,它删除了第一个0,然后写:04f 有什么帮助吗?


Tags: 代码inforfchexordhex0040f
3条回答
print ["0x%02x"%ord(i) for i in b[0x15c:0x15f]]

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

注意,这仍然会从大于2个十六进制值的对象中删除前导0 例如:"0x%02x"%0x0055 => "0x55"

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

这是因为hex()不包含任何前导零,例如:

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

要确保始终有两个字符,可以在必要时使用^{}添加前导零:

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

下面是代码中的内容:

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

相关问题 更多 >