2012-05-30 22 views
14

Estoy pensando en que el módulo que busco es binascii, pero parece que no puedo obtener los resultados exactos que estoy buscando.Python: Cómo convertir una cadena que contiene bytes hexadecimales en una cadena hexadecimal

Esto es lo que quiero hacer. Quiero convertir:

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

a

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

Cualquier Pythonistas conocimientos de un lugar fresco (o, francamente, funcional) manera de hacer esto?

Respuesta

18

solución más fácil en Python 2.x:

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

La segunda línea es equivalente a

binascii.a2b_hex(s) 
+0

Sí, eso es exactamente lo que estaba buscando para, y estaba en la clase de cuerdas esperándome. Gracias, Sven! –

3

Con binascii módulo:

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

'unhexlify()' es solo otro nombre para 'a2b_hex()' [documentación de binascii] (https://docs.python.org/2/library/binascii.html#binascii.a2b_hex) – Murmel

Cuestiones relacionadas