Python: How to convert a string containing hex bytes to a hex string
hex, python, string
Solution
In all versions of Python, you can use the function `binascii.a2b_hex()` (also known as `binascii.unhexlify()`):
>>> import binascii
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> binascii.a2b_hex(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'
In Python 3.x, you can use `bytes.fromhex(s)`.
In Python 2.x, you can use the `hex` str-to-str codec:
>>> s.decode("hex")
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'
The codec internally calls `binascii.a2b_hex()`.
Problem
I'm thinking binascii is the module I'm looking for, but I can't quite seem to get the exact results for which I am looking. Here's what I want to do. I want to convert: ``` >>> s = '356a192b7913b04c54574d18c28d46e6395428ab' >>> print len(s) 40 ``` to ``` >>> 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 ``` Any Pythonistas know of a cool (or, frankly, functional) way to do this?