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 знает о здоровом (или, честно говоря, функциональном) способе сделать это?

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

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

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

 binascii.a2b_hex(s) 

С модулем binascii :

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