如何使用';十六进制';用Python 3.2或更高版本编码?

如何使用';十六进制';用Python 3.2或更高版本编码?,python,encoding,python-3.x,hex,Python,Encoding,Python 3.x,Hex,在Python2中,要获取字符串中十六进制数字的字符串表示形式,可以执行以下操作 >>> '\x12\x34\x56\x78'.encode('hex') '12345678' 在Python3中,这不再有效(在Python3.2和3.3上测试): 文件中也没有提到这一点(至少在我看的地方没有提到)。我一定错过了一些简单的东西,但我看不出它是什么。您需要通过模块和编解码器(或其hex别名,如果可用*): *来自文档:“在版本3.4中更改:恢复二进制转换的别名”。使用: 另一种

在Python2中,要获取字符串中十六进制数字的字符串表示形式,可以执行以下操作

>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'
在Python3中,这不再有效(在Python3.2和3.3上测试):

文件中也没有提到这一点(至少在我看的地方没有提到)。我一定错过了一些简单的东西,但我看不出它是什么。

您需要通过模块和编解码器(或其
hex
别名,如果可用*):

*来自文档:“在版本3.4中更改:恢复二进制转换的别名”。

使用:

另一种方法是:

顺便说一下,方法更简单:

>>> import binascii
>>> x=b'test'
>>> x=binascii.hexlify(x)
>>> x
b'74657374'
>>> y=str(x,'ascii')
>>> y
'74657374'
>>> x=binascii.unhexlify(x)
>>> x
b'test'
>>> y=str(x,'ascii')
>>> y
'test'

看看这个答案:我会反对以欺骗的方式结束这件事。这个问题特别是关于Python3.2的,
hex
编解码器正式回归(但很难找到)。链接的问题是关于Python3.1的。你的意思是不是
codecs.encode(b'\x12',hex\u codec')
?使用
'hex'
我只得到
LookupError:未知编码:hex
文档说
hex
是3.2中的别名,但我的3.2.3安装也有相同的错误。虽然我找不到错误修复的参考,但从3.4开始,
hex
看起来又在工作了。谢谢!你救了我一天:)所以你看了一眼所谓的傻瓜,是吗?:)不,这是我通常的做法:)
str(x,'ascii')
的拼写更好
x。decode('ascii')
binascii
对任何关心它的人来说似乎也更快。
>>> b'\x12'.encode('hex')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
codecs.encode(b'\x12', 'hex_codec')
>>> import base64
>>> base64.b16encode(b'\x12\x34\x56\x78')
b'12345678'
>>> import binascii
>>> binascii.hexlify(b'\x12\x34\x56\x78')
b'12345678'
>>> import binascii
>>> x=b'test'
>>> x=binascii.hexlify(x)
>>> x
b'74657374'
>>> y=str(x,'ascii')
>>> y
'74657374'
>>> x=binascii.unhexlify(x)
>>> x
b'test'
>>> y=str(x,'ascii')
>>> y
'test'