可读的十六进制字节转储

时间:2020-09-05 09:41:08

标签: python

我想将字节列表转换为十六进制值的字符串。字节列表有点长,所以我想在字节之间增加空格以提高可读性。函数hexlifyhex都可以完成工作:

import binascii
a = [1,2,3,4]
s = binascii.hexlify(bytearray(a))
print s
s = bytes(a).hex()
print s

但是结果是'01020304'。我想要一个转储,在字节之间留一个空格,例如“ 01 02 03 04”。如何有效地做到这一点?

编辑: 还有一种迭代所有字节的方法。这样会有效吗?

s = ' '.join('%02x' % i for i in a)

2 个答案:

答案 0 :(得分:1)

您可以迭代结果

import binascii
a = [1,2,3,4]
s = binascii.hexlify(bytearray(a))
s = bytes(a).hex()
iterate = iter(s)
print ' '.join(a+b for a,b in zip(iterate, iterate))

答案 1 :(得分:0)

您可以将bytes.hex与分隔符字符串一起使用:

>>> bs = b'Hello world'
>>> bs.hex(sep=' ')
'48 65 6c 6c 6f 20 77 6f 72 6c 64'