首页 > 解决方案 > 打印带有空格的十六进制

问题描述

我正在尝试以另一种方式打印我的十六进制...

首先,我正在转换它(字节串是变量的名称):

b'\xff\x00\xff\xff\xff'

十六进制,

print(bytestring.hex())

输出:

ff00ffffff

但我一直在尝试让它输出这个:

ff 00 ff ff ff

但没有运气。

有什么建议么?干杯!


更新:

stringdata = f.read(5)
print(stringdata)
#b'\xff\x00\xff\xff\xff'

readHex = " ".join(["{:02x}".format(x) for x in stringdata.hex()])
# ValueError: Unknown format code 'x' for object of type 'str'

标签: pythonpython-3.xhex

解决方案


只需将您的字节数组转换为十六进制字符串,然后用空格连接结果:

>>> d=b'\xff\x00\xff\xff\xff'
>>> " ".join(["{:02x}".format(x) for x in d])
'ff 00 ff ff ff'

请注意," ".join("{:02x}".format(x) for x in d)这也可以,但强制创建列表更快,如下所述:加入字符串。生成器或列表理解?

在python 2bytes中,str你必须使用ord来获取字符代码

>>> " ".join(["{:02x}".format(ord(x)) for x in d])

推荐阅读