Python3字节到十六进制字符串

标签 python python-3.x hex

我有一个字节对象:

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/

相关文章:

c 编程将十六进制放入 char

分配时 Python 字典键错误 - 我该如何解决这个问题?

python - PUT 方法在 django-tastypie 中不起作用?

python - sklearn 的 DecisionTreeClassifier 中的 "splitter"属性有什么作用?

java - 如何构建匹配十六进制数字的正则表达式?

windows - 用于查看组合字符串和 float 据的十六进制编辑器

Python 和 C/C++ 多线程 : run several threads executing python in the background of C

dns - DNS 查找的人类可读形式

Python:通过循环最小化函数

python - Pandas ( python ): Fill empty cells with with previous row value?