В 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'
И в документах не упоминается ни то, ни другое (по крайней мере, не там, где я смотрел). Я должен пропустить что-то простое, но я не понимаю, что это такое.