Подтвердить что ты не робот

Python: как преобразовать строку, содержащую шестнадцатеричные байты в шестую строку

Я думаю, что binascii - это модуль, который я ищу, но я не могу получить точные результаты, которые я ищу.

Вот что я хочу делать. Я хочу конвертировать:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> print len(s)
40

к

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab'
>>> print len(hs)
20

Любой Pythonistas знает о прохладном (или, честно говоря, функциональном) способе сделать это?

4b9b3361

Ответ 1

Самое простое решение в Python 2.x:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> s.decode("hex")
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

Вторая строка эквивалентна

binascii.a2b_hex(s)

Ответ 2

С модулем binascii:

>>> from binascii import unhexlify
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> unhexlify(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'