Декодируйте шестнадцатеричную строку в Python 3

47
задан chimeracoder 19 July 2010 в 18:44
поделиться

2 ответа

Что-то вроде:

>>> bytes.fromhex('4a4b4c').decode('utf-8')
'JKL'

Просто укажите кодировку, которую вы используете.

74
ответ дан 26 November 2019 в 19:40
поделиться

Ответы от @unbeli и @Niklas хороши, но ответ @unbeli не работает на все шестнадцатеричные строки, и желательно сделать декодирование, не импортируя дополнительную библиотеку (кодеки). Следующее должно работать (но не будет очень эффективно для больших строк):

>>> result = bytes.fromhex((lambda s: ("%s%s00" * (len(s)//2)) % tuple(s))('4a82fdfeff00')).decode('utf-16-le')
>>> result == '\x4a\x82\xfd\xfe\xff\x00'
True

В основном, это работает вокруг наличия недопустимых utf-8 байтов путем дополнения нулями и декодирования как utf-16.

0
ответ дан 26 November 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: