2013-06-13 21 views
7

I eine ganze Zahl Liste in Python haben, die den folgenden int-Werte (die verändert werden können, um hex Bytewerte) entsprechen:Python byteArray Printing

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

Wenn jedoch ich diese Liste in eine bytearray convert (Mit Bytearray (NameOfList)), bekomme ich den folgenden Ausdruck.

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

ich die korrekten Werte aus diesem Byte-Array ziehen kann, unabhängig davon, wie es druckt, soll aber nicht der bytearray Ausdruck entspricht die Hex-Werte des Byte-Array? (Ich meine, es scheint meistens den Hex-Werten bis nach \ x0f zu folgen, wo es anfängt, Kauderwelsch auszugeben ...)

+0

Es sieht gut aus für mich. Es ist nur Rendering Bytes als ASCII-Zeichen wann immer möglich. Nach '\ x0f' hast du 49 = '1' und 113 = 'q', etc. http://www.asciitable.com/ – axblount

+1

Genau ... Es stellt nur nicht druckbare Zeichen als' \ x..' dar – mgilson

+0

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

Antwort

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 

Verwenden Siehe binascii, wenn Sie möchten, dass alle es als Hex-String gedruckt werden

+0

... genau das, was ich brauchte. – uhoh

5

Es sieht gut aus für mich. Es ist nur Rendering Bytes als ASCII-Zeichen wann immer möglich. Nach 15 = \x0f haben Sie 49 = '1' und 113 = 'q' usw.

http://asciitable.com