2013-06-13 40 views
7

Tôi có một danh sách số nguyên trong Python phải tương ứng với giá trị int sau (có thể thay đổi các giá trị hex byte):Python ByteArray In ấn

[10, 145, 140, 188, 212, 198, 210, 25, 152, 20, 120, 15, 49, 113, 33, 220, 124, 67, 174, 224, 220, 241, 241] 

Tuy nhiên, khi tôi chuyển đổi danh sách đó để một bytearray (bằng cách sử dụng bytearray (nameOfList)), tôi nhận được bản in sau.

bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0\xdc\xf1\xf1') 

Tôi có thể lấy các giá trị chính xác từ mảng byte này, bất kể nó in như thế nào, nhưng không nên in dấu chéo tương ứng với giá trị hex của mảng byte? (Ý tôi là, nó dường như chủ yếu tuân theo các giá trị hex cho đến sau \ x0f, nơi nó bắt đầu đặt ra vô nghĩa ...)

+0

Có vẻ ổn với tôi. Nó chỉ hiển thị byte dưới dạng ký tự ASCII bất cứ khi nào có thể. Sau '\ x0f' bạn có 49 = '1' và 113 = 'q', v.v. http://www.asciitable.com/ – axblount

+1

Chính xác ... Nó chỉ thể hiện các ký tự không in dưới dạng' \ x..' – mgilson

+0

['list (your_bytearray) == your_list'] (http://ideone.com/GdLDxK) – jfs

Trả lời

26
>>> x = bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0 
\xdc\xf1\xf1') 
>>> import binascii 
>>> print binascii.hexlify(x) 
0a918cbcd4c6d2199814780f317121dc7c43aee0dcf1f1 

Sử dụng binascii nếu bạn muốn tất cả của nó được in như là một chuỗi hex

+0

... chỉ là những gì tôi cần. – uhoh

5

Có vẻ ổn với tôi. Nó chỉ hiển thị byte dưới dạng ký tự ASCII bất cứ khi nào có thể. Sau 15 = \x0f bạn có 49 = '1' và 113 = 'q', vv

Xem http://asciitable.com