Как использовать кодировку «hex» в Python 3.2 или выше?

В 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' 

И документы не упоминают об этом (по крайней мере, не там, где я смотрел). Мне нужно пропустить что-то простое, но я не понимаю, что это такое.

4 Solutions collect form web for “Как использовать кодировку «hex» в Python 3.2 или выше?”

Вам нужно пройти через модуль codecs и кодек hex_codec (или его hex псевдоним, если он доступен * ):

 codecs.encode(b'\x12', 'hex_codec') 

* Из документации: «Изменено в версии 3.4: Восстановление псевдонимов для двоичных преобразований» .

Еще один способ использования binascii.hexlify() :

 >>> import binascii >>> binascii.hexlify(b'\x12\x34\x56\x78') b'12345678' 

Использование base64.b16encode() :

 >>> import base64 >>> base64.b16encode(b'\x12\x34\x56\x78') b'12345678' 

binascii методы binascii проще:

 >>> 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' 
  • Python ThreadPool с ограниченным размером очереди задач
  • python - Запуск ток + носететов на Python 3.2 testenv
  • Как декодировать массив numpy dtype = numpy.string_?
  • Форматирование строки Python с знаком процента
  • Ошибка при создании нового текстового файла с помощью python?
  • Почему этот код медленнее в Python 3?
  • AttributeError: объект 'NoneType' не имеет атрибута 'format'
  • Насколько эффективна максимальная функция Python
  • Python - лучший язык программирования в мире.