Python 2 では、文字列内の 16 進数の文字列表現を取得するには、次のようにします。
>>> '\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 には、コーデックが Python 3 で削除されたことに言及している回答が少なくとも1 つあります。しかし、 docsによると、Python 3.2 で「バイトからバイトへのマッピング」として再導入されました。hex
ただし、これらの「バイトからバイトへのマッピング」を機能させる方法がわかりません。
>>> b'\x12'.encode('hex')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
そして、ドキュメントもそれについて言及していません(少なくとも私が見た場所ではありません)。単純なものが欠けているに違いありませんが、それが何であるかわかりません。