2012-05-05 10 views
5

Làm thế nào để chuyển đổi của tôi bytearray('b\x9e\x18K\x9a') cho một cái gì đó như thế này ->\x9e\x18K\x9a < --- chỉ cần str, không phải mảng!Làm thế nào để chuyển đổi bytearray của tôi ('b x9e x18K x9a') thành một cái gì đó như thế này -> ' x9e x18K x9a' <--- chỉ str, không mảng

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

tôi cố gắng để giải mã bytearray của tôi bằng cách

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

nhưng nó không thể ...

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 

Giúp tôi xin ...

+1

gì bạn đang yêu cầu không xuất hiện để thực hiện bất kỳ ý nghĩa. Bạn có thể mở rộng và làm rõ câu hỏi của bạn bằng cách nói những gì bạn đang cố gắng để đạt được hơn tất cả? –

+0

Chào mừng bạn đến với SO! Nếu bạn hài lòng với câu trả lời, hãy đảm bảo bạn đánh dấu câu trả lời là được chấp nhận bằng cách nhấp vào biểu tượng dấu kiểm bên cạnh câu hỏi. – jterrace

Trả lời

13

Trong 2.x , chuỗi là bytestrings.

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

Latin-1 bản đồ 256 ký tự đầu tiên tương đương bytevalue của họ, vì vậy trong Python 3.x:

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

Cảm ơn bạn rất nhiều ... – user1376294

Các vấn đề liên quan