在 Python 2 中,要获取字符串中十六进制数字的字符串表示形式,您可以这样做
>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'
在 Python 3 中,这不再起作用(在 Python 3.2 和 3.3 上测试):
>>> '\x12\x34\x56\x78'.encode('hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: unknown encoding: hex
这里至少有一个关于 SO 的答案提到hex
编解码器已在 Python 3 中删除。但是,根据文档,它在 Python 3.2 中被重新引入,作为“字节到字节的映射”。
但是,我不知道如何让这些“字节到字节的映射”起作用:
>>> b'\x12'.encode('hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
而且文档也没有提到这一点(至少不是我看过的地方)。我一定错过了一些简单的东西,但我看不到它是什么。