Plist Format Binär Optionen


Ich versuche, eine Eigenschaft Liste der Suchergebnisse zu meiner iPhone App zu dienen. Der Server ist ein Prototyp, geschrieben in Python. Zuerst fand ich Pythons eingebaute Plistlib, was genial ist. Ich möchte suchen-wie-Sie-Typ ein Schuss, so dass ich es brauchen, um so klein wie möglich zu sein, und xml war zu groß. Das binäre Plist-Format scheint eine gute Wahl zu sein. Leider macht plistlib keine Binärdateien, also schritt nach oben PyObjC. (Segue: Im sehr offen für alle anderen Gedanken, wie man Live-Suche zu erreichen. Ich habe schon die Daten so weit wie möglich, aber nur genug Ergebnisse, um das Fenster mit dem iPhone-Tastatur zu füllen, was ist 5.) Leider, Obwohl ich Python kenne und mich mit Cocoa ziemlich anständig bekomme, bekomme ich immer noch nicht PyObjC. Dies ist das Kakao-Äquivalent von dem, was ich tun möchte: Ich dachte, ich sollte in der Lage sein, so etwas zu tun, aber dataWithPropertyList ist nicht in der NSPropertyListSerialization Objekte dir () Auflistung. Ich sollte auch wahrscheinlich die Liste in NSArray umwandeln. Ich habe die PyObjC-Docs ausprobiert, aber es ist so tangential zu meiner wirklichen Arbeit, dass ich dachte, Id versuchen ein SO SOS auch. Dies ist, wie ich im Plist auf der iPhone-Seite lese. Glücklich zu klären, wenn irgendjemand dies nicht sinnvoll macht. Converting Binary Plists Binary Plists sind die Dateien, die Apple-Produkte verwenden, um Informationen zu speichern. Der einfachste Weg, sie zu sehen, ist, sie in XML zu konvertieren. Beachten Sie, dass binäre Daten in XML-Plist in base64 konvertiert werden und daher Strings in den Binärdaten nicht direkt sichtbar sind. Das Programm plutil ist nativ zu Mac OS X (ab 10.2), aber es ist auch enthalten, wenn iTunes auf einem Windows PC installiert ist. Auf linux libplist 1 gibt auch ein Äquivalent von plutil. Plutil auf einem Windows-PC ist gespeichert in: Welches kann hinzugefügt werden, um die PATH in Umgebungsvariablen so plutil kann von überall ausgeführt werden Wenn Sie möchten, kopieren Sie die plutil ausführbare Datei in ein anderes Verzeichnis erfordert es eine Reihe von DLLs zu funktionieren. Diese DLLs sind: ASL, CFNetwork, CoreFoundation, Foundation, icudt46, libdispatch, libicuin, libicuuc, libtidy, libxml2, objc, ptheadVC2, SQLite3 und zlib. Diese sind alle im Apple Application Support Ordner zusammen mit plutil. exe gefunden. Um Binärplisten in XML umzuwandeln, führen Sie den Befehl aus: Oder mit libplistischen externen LinksProperty ListBinary Das Binär-Eigenschaftslistenformat ist eines von mehreren Formaten, die für Plist-Dateien verwendet wurden. Die Standard-Mittel für Anwendungen unter Betriebssystemen, die von NeXTSTEP (einschließlich der aktuellen Apple OSs) abgesenkt wurden, um Konfigurationsdaten zu speichern. Das Binärformat wurde vor kurzem als die anderen Formate eingeführt, ist aber jetzt die Vorgabe für Apple-Systeme. Format Beschreibung Verfügbare Typen Die folgenden Typen sind in einem binären Plist verfügbar: Singleton (boolean, null, fill) Integer Float Datum Binärdaten Single Byte String Doppelte Byte String UID Array Wörterbuch Datei Sektionen Eine binäre Plist Datei hat vier Abschnitte: Die ersten 8 Bytes Sind eine Kennung, gleich bplistXX wobei XX zwei Ziffern ist. Bplist00 und bplist01 sind bekannt, ich kenne die Unterschiede nicht. Zweitens sind alle Elemente in der Pliste, codiert und verkettet. Drittens ist die Verkettung der Offsets aller Elemente im Plist, wobei jeder Offset als unsigned Integer in einer festen Anzahl von Bytes angegeben ist. Ein Objekt im Plist hat eine Referenznummer, die auf der 0-basierten Indizierung dieser Tabelle basiert, z. B. Objektnummer 0 ist das Objekt bei der Versetzung zuerst in dieser Tabelle gegeben. Die letzten 32 Bytes, die Trailer-Sektion. Die letzten 32 Bytes eines Binärplus haben folgendes Format: 6 Bytes von x00 padding eine 1 Byte Integer, die die Anzahl der Bytes für einen Offsetwert ist. Gültige Werte sind 1, 2, 3 oder 4. Offsetwerte werden als unsigned, big endian integers codiert. Muss reich genug sein, um den Offset der Offset-Tabelle zu kodieren, nicht nur den höchsten Objektversatz. Eine 1 Byte ganze Zahl, die die Anzahl der Bytes für eine Objektreferenznummer ist. Gültige Werte sind 1 oder 2. Referenznummern werden als unsigned, big endian integers codiert. 4 Bytes von x00 padding eine 4-Byte-Integer, die die Anzahl der Objekte in der plist 4 Bytes von x00 padding eine 4-Byte-Integer, die die Referenznummer des Wurzelobjekts in der Pliste ist. Das ist normalerweise null. 4 Bytes von x00 padding eine 4 Byte Integer, die die Versetzung in der Datei des Anfangs der Offset-Tabelle, oben genannt als das dritte Element in einem binären Plist Objektcodierung Die Codierung der verfügbaren Typen sind wie folgt: Die ersten vier Bits Sind eine ID-Nummer des Objekttyps nach folgendem Mapping: 0x0 Singleton 0x1 Integer 0x2 Float 0x3 Datum 0x4 Binärdaten 0x5 Single Byte String 0x6 Double Byte String 0x8 UID 0xa Array 0xd Wörterbuch Die zweiten vier Bits sind die Größe des Objekts . Wenn der angegebene Wert 15 ist, bedeutet dies, dass die wahre Objektgröße größer ist als in vier Bits ausgedrückt werden kann. In diesem Fall ist das nächste Byte der Anfang der wahren Größe, die wie die Integer-Objekte codiert ist, außer dass der Wert unsigned ist. Dies ist bei 0x0-Objekten nicht der Fall, siehe unten für Details. Ich werde auf diesen Wert als Objektlänge verweisen. Die Kodierung für den Rest des Objekts variiert je nach Typ. Die Byte-Länge ist die Anzahl der Bytes, die beim Codieren des Objekts verwendet werden, wobei die Codierung der Typ-ID-Nummer und der Objektlänge, die bereits diskutiert wurde, nicht zählt. Typnummer 0x0 gruppiert zusammen boolesche Werte, einen Nullwert und etwas namens Füllung von plutil. pl. Ich weiß nicht, was Füllung ist. Die Objektlänge ist eigentlich der Wert des Objekts, und die Bytelänge ist immer Null. Ein Wert von 0 bedeutet null, 8 bedeutet falsch, 9 bedeutet wahr und 15 bedeutet füllen. Jeder andere Wert ist ungültig. Die Bytelänge ist gleich 2 für die Leistung der Objektlänge. Gültige Objektlängen sind 0, 1, 2 und 3 für 1, 2, 4 und 8 Byte ganze Zahlen. Die Codierung ist als Big-Endian, signierte Ganzzahl in der entsprechenden Anzahl von Bytes. Die Objektlänge zu Bytelängenumwandlung ist die gleiche wie bei Ganzzahlen. Die Objektlänge beträgt 2 oder 3, entsprechend einer Byte-Länge von 4 oder 8. Die Codierung ist dementsprechend ein Big-Endian-, Single-Precision - oder Double-Precision-Float. Die Daten werden als Schwimmer mit einem Wert von Sekunden seit der Epoche vom 1. Januar 2001, 0:00:00 GMT gespeichert. Die Codierung ist die gleiche wie die Codierung für Floats, außer dass die Objektlänge immer 3 ist, für eine Byte Länge von 8. Binärdaten Die Bytelänge ist die Objektlänge und jeder Wert ist gültig. Die Bytes werden nicht interpretiert. Single Byte String Die Byte Länge ist die Objektlänge und jeder Wert ist gültig. Encoding ist ASCII. Double Byte String Die Byte Länge ist doppelt so lang wie die Objektlänge und jeder Wert ist gültig. Die Kodierung ist utf-16 (big endian). Encoding ist als Ganzzahl, außer Werte sind unsigned. Diese werden weitgehend in Dateien verwendet, die mit NSKeyedArchiver, einem Serializer für Objective-C-Objekte, geschrieben wurden. Der UID-Wert scheint der Index eines Wertes innerhalb der Objektliste innerhalb eines solchen Plists zu sein. Die Bytelänge ist die Objektlänge mal die Anzahl der Bytes pro Objektreferenz für diese Plistdatei, d. h. entweder das eine oder das Zweifache der Objektlänge. Jede Objektlänge ist gültig. Die Codierung ist die Verkettung von Objektreferenznummern als unsigned, big-endian-Integers, die jeweils in der Anzahl der Bytes pro Objektreferenz für diese Plist-Datei codiert sind. Wörterbuch Die Bytelänge ist zweimal die Objektlänge mal die Anzahl der Bytes pro Objektreferenz. Die Codierung ist wie die Verkettung von zwei codierten Arrays, die erste der Tasten und die zweite der Werte. Der erste Wert in der Schlüsselliste entspricht dem ersten Wert in der Liste der Werte und so weiter. Final Notes Beim Schreiben einer binären Plist-Datei sollten alle Werte, die sich innerhalb der Datei wiederholen, nur einmal codiert werden und das einzelne Objekt referenziert wird, wo immer dieser Wert wiederholt wird. Andere Links

Comments

Popular posts from this blog

Forex Trading Stunden Indikator Mt4 Frei

Forex Trading In Islam Urdu Suhag

Fxdd Forex Optionen