我有一个字节对象:
a = b'067b'
如何从中获取字符串?像这样:
"067b"
我试过:
In [3]: str(a)
Out[3]: "b'067b'"
In [4]: import codecs
In [5]: codecs.decode(a,'hex')
Out[5]: b'\x06{'
In [6]: import binascii
In [7]: binascii.b2a_hex(a)
Out[7]: b'30363762'
In [8]: binascii.hexlify(a)
Out[8]: b'30363762'
没有办法做到这一点吗?
最佳答案
你只是想在这里从 ASCII 解码,你的字节串已经代表十六进制数字,在 ASCII 字符中:
>>> a = b'067b'
>>> a.decode('ascii')
'067b'
您尝试的所有操作都是将字节解释为数字数据,要么解释为表示字节的十六进制数,要么解释为表示数字数据的字节。
因此您的第一次尝试将值 06
作为十六进制数并将其转换为字节值 6
,并且 7b
转换为字节值 123,它是 {
字符的 ASCII 代码点。
在第二次尝试中,您将每个字节转换为其数值的十六进制表示形式。 0
字节被解释为整数 48('0'
字符的 ASCII 代码点),即十六进制的 30
。 '6'
是 54,或十六进制的 36
,等等。
关于Python3字节到十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023429/