Python binäre Daten Lesen
Einen urllib2 Anfrage erhält binäre Antwort wie unten:
00 00 00 01 00 04 41 4D 54 44 00 00 00 00 02 41
97 33 33 41 99 5C 29 41 90 3D 71 41 91 D7 0A 47
0F C6 14 00 00 01 16 6A E0 68 80 41 93 B4 05 41
97 1E B8 41 90 7A E1 41 96 8F 57 46 E6 2E 80 00
00 01 16 7A 53 7C 80 FF FF
Seine Struktur ist:
DATA, TYPE, DESCRIPTION
00 00 00 01, 4 bytes, Symbol Count =1
00 04, 2 bytes, Symbol Length = 4
41 4D 54 44, 6 bytes, Symbol = AMTD
00, 1 byte, Error code = 0 (OK)
00 00 00 02, 4 bytes, Bar Count = 2
FIRST BAR
41 97 33 33, 4 bytes, Close = 18.90
41 99 5C 29, 4 bytes, High = 19.17
41 90 3D 71, 4 bytes, Low = 18.03
41 91 D7 0A, 4 bytes, Open = 18.23
47 0F C6 14, 4 bytes, Volume = 3,680,608
00 00 01 16 6A E0 68 80, 8 bytes, Timestamp = November 23,2007
SECOND BAR
41 93 B4 05, 4 bytes, Close = 18.4629
41 97 1E B8, 4 bytes, High = 18.89
41 90 7A E1, 4 bytes, Low = 18.06
41 96 8F 57, 4 bytes, Open = 18.82
46 E6 2E 80, 4 bytes, Volume = 2,946,325
00 00 01 16 7A 53 7C 80, 8 bytes, Timestamp = November 26,2007
TERMINATOR
FF FF, 2 bytes,
Wie zu Lesen binäre Daten wie diese?
Vielen Dank im Voraus.
Update:
Ich habe versucht, struct module auf die ersten 6 bytes mit dem folgenden code:
struct.unpack('ih', response.read(6))
(16777216, 1024)
Aber es sollte die Ausgabe (1, 4). Ich nehme einen Blick in die Bedienungsanleitung aber haben keine Ahnung, was falsch war.
InformationsquelleAutor jack | 2009-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor jfs
So, hier ist mein bestes bei der Interpretation der Daten, die Sie geben...:
dieser strahlt:
...das scheint zu sein, ziemlich nahe an dem, was Sie wollen, net der einige zellformatierungen details. Hoffe, das hilft!-)
InformationsquelleAutor Alex Martelli
Sind Sie Auspacken big-endian " - Daten auf einer little-endian Maschine. Versuchen Sie dies:
Dieser erzählt, entpacken, betrachten Sie die Daten in network-order (big-endian). Auch die Werte von Zähler und Längen können nicht negativ sein, so sollten Sie sollten die Verwendung der unsigned-Varianten in das format string.
ja, eine ganze 8 Sekunden
InformationsquelleAutor mhawke
Werfen Sie einen Blick auf die struct.entpacken in das struct-Modul.
InformationsquelleAutor monkut
Mithilfe von pack/unpack-Funktionen von "struct" - Paket. Mehr info hier http://docs.python.org/library/struct.html
Bye!
InformationsquelleAutor
Wie schon erwähnt,
struct
ist das Modul, das Sie verwenden müssen.Bitte Lesen Sie die Dokumentation zu lernen, über die byte-Reihenfolge, etc.
In Ihrem Beispiel müssen Sie die folgenden (wie Ihre Daten big-endian und unsigned):
InformationsquelleAutor Andrey Vlasovskikh