2012-05-05 8 views
5

Cómo convertir mi bytearray('b\x9e\x18K\x9a') a algo como este ->\x9e\x18K\x9a < --- simplemente str, ¡no matriz!Cómo convertir mi bytearray ('b x9e x18K x9a') a algo como esto -> ' x9e x18K x9a' <--- simplemente str, no array

>> uidar = bytearray() 
>> uidar.append(tag.nti.nai.uid[0]) 
>> uidar.append(tag.nti.nai.uid[1]) 
>> uidar.append(tag.nti.nai.uid[2]) 
>> uidar.append(tag.nti.nai.uid[3]) 
>> uidar 
    bytearray('b\x9e\x18K\x9a') 

trato de descifrar mi bytearray por

uid = uidar.decode('utf-8') 

pero no puede ...

Traceback (most recent call last): 
    File "<pyshell#42>", line 1, in <module> 
    uid = uidar.decode("utf-8") 
    File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode 
    return codecs.utf_8_decode(input, errors, True) 
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9e in position 0: invalid start byte 

me ayude por favor ...

+1

Lo que está pidiendo no parece tener ningún sentido. ¿Podría ampliar y aclarar su pregunta diciendo lo que está tratando de lograr en general? –

+0

¡Bienvenido a SO! Si está satisfecho con una respuesta, asegúrese de marcarla como aceptada haciendo clic en el ícono de marca de verificación al lado de la pregunta. – jterrace

Respuesta

13

En 2.x , las cadenas son cadenas de bytes.

>>> str(bytearray('b\x9e\x18K\x9a')) 
'b\x9e\x18K\x9a' 

América-1 mapea los primeros 256 caracteres a sus equivalentes bytevalue, por lo que en Python 3.x:

3>> bytearray(b'b\x9e\x18K\x9a').decode('latin-1') 
'b\x9e\x18K\x9a' 
+0

Muchas gracias ... – user1376294

Cuestiones relacionadas