chx*_*sny 4 python hex python-3.x
我正在尝试以其他方式打印十六进制...
首先,我将其转换(字节串是变量的名称):
b'\xff\x00\xff\xff\xff'
Run Code Online (Sandbox Code Playgroud)
十六进制
print(bytestring.hex())
Run Code Online (Sandbox Code Playgroud)
输出:
ff00ffffff
Run Code Online (Sandbox Code Playgroud)
但我已经尝试了一段时间以使其输出:
ff 00 ff ff ff
Run Code Online (Sandbox Code Playgroud)
但没有运气。
有什么建议么?干杯!
更新:
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'
Run Code Online (Sandbox Code Playgroud)
只需将字节数组转换为十六进制字符串,然后将结果与空格连接即可:
>>> d=b'\xff\x00\xff\xff\xff'
>>> " ".join(["{:02x}".format(x) for x in d])
'ff 00 ff ff ff'
Run Code Online (Sandbox Code Playgroud)
请注意," ".join("{:02x}".format(x) for x in d)这也可以,但是强制列表创建的速度更快,如此处所述:连接字符串。生成器或列表理解?
在Python 2,bytes就是str这样,你必须使用ord获得的字符代码
>>> " ".join(["{:02x}".format(ord(x)) for x in d])
Run Code Online (Sandbox Code Playgroud)
小智 5
在 Python 3.8+ 中,hex函数有一个可选的参数拆分器。
>>> print(b'\xff\x00\xff\xff\xff'.hex(' '))
'ff 00 ff ff ff'
Run Code Online (Sandbox Code Playgroud)
你可以用你想要的任何字符分割十六进制字符串。
>>> print(b'\xff\x00\xff\xff\xff'.hex(':'))
'ff:00:ff:ff:ff'
Run Code Online (Sandbox Code Playgroud)