Im Gegensatz zu dem, was Sie aufgrund des Titels vielleicht erwartet haben, ist dies keine Einführung in das wunderbare UNIX-Tool Hexdump. Wenn Sie danach gesucht haben, sollten Sie zuerst die Manpage aufrufen, denn ich werde kein Wort darüber verlieren. In diesem Artikel geht es um etwas Besseres...
Bevor wir darauf eingehen, zunächst eine kurze Botschaft an alle, die meinen, XML oder JSON seien die einzigen Datenkodierungsformate, die wir jemals brauchen werden: WAKE UP!!! Nur ein Bruchteil der Daten auf Ihrer Festplatte ist als XML oder JSON kodiert. Ein großer Teil davon sind binär kodierte Daten. Wie würden Sie sich fühlen, wenn Sie keine Bilder, mp3, Videos, PDFs und Word-Dokumente hätten (nun, das wäre schon in Ordnung, denke ich)? Wenn Sie wirklich glauben, dass textbasierte Formate alles sind, was Sie jemals brauchen werden, dann können Sie sich von all dem verabschieden. Nachdem das geklärt ist, lesen Sie jetzt weiter. Binäre Daten werden bleiben. Tatsächlich entwickelt sich ein großer Teil der Welt um binär codierte Daten herum. (Das Internet zum Beispiel. TCP-IP-Pakete sind keine XML-Dokumente, obwohl es in der Vergangenheit einen RFC gab, der so etwas vorschlug.) Mit dem Aufkommen von NoSQL-Datenbanken hat die Bedeutung eines besseren Umgangs mit binär kodierten Daten wahrscheinlich sogar noch zugenommen. (Viele dieser Datenbanken speichern Arrays von Bytes und überlassen es Ihnen, diese in etwas Nützliches umzuwandeln). Die Qualen! Leider ist der Umgang mit binär kodierten Daten nicht ganz einfach. Selbst zu verstehen, was dekodiert wird und warum, kann extrem schwierig sein. Positiv ist, dass wir Tools wie hexdump und hexl-mode (Emacs) haben, aber die Ausgabe von hexdump -C wird nur für wenige Leute von Bedeutung sein. Für den Rest von uns müssen wir uns immer noch sehr anstrengen, um zu verstehen, was in der binär kodierten Darstellung enthalten ist. Hier ist der Anfang einer Java-Klassendatei, die mit hexdump -C dargestellt wird, als ein Beispiel:00000000 ca fe ba be 00 00 00 31 00 2b 0a 00 0a 00 1d 09 |.......1.+......| 00000010 00 09 00 1e 09 00 09 00 1f 07 00 20 0a 00 04 00 |........... ....| 00000020 1d 0a 00 04 00 21 0a 00 04 00 22 0a 00 04 00 23 |.....!...."....#| 00000030 07 00 24 07 00 25 01 00 03 66 6f 6f 01 00 12 4c |..$..%...foo...L| 00000040 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 |java/lang/String| 00000050 3b 01 00 06 4c 4f 4e 44 4f 4e 01 00 0d 43 6f 6e |;...LONDON...Con| 00000060 73 74 61 6e 74 56 61 6c 75 65 08 00 26 01 00 03 |stantValue..&...| 00000070 62 61 72 01 00 01 49 01 00 06 3c 69 6e 69 74 3e |bar...I...| 00000080 01 00 16 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 |...(Ljava/lang/S| 00000090 74 72 69 6e 67 3b 49 29 56 01 00 04 43 6f 64 65 |tring;I)V...Code|Wie ich bereits sagte, bietet es zwar eine gewisse Hilfe, aber keine große Hilfe. Aber was wäre, wenn Aber Moment mal, wenn der Computer dies in etwas Nützliches entschlüsseln kann, warum ist er dann nicht in der Lage, mir mehr Einblick in das zu geben, was ich gerade sehe? Ich meine, es ist eine ganze Menge Arbeit, das oben Gesagte zu interpretieren. Warum ist ein Computer nicht in der Lage, es mit Anmerkungen zu versehen, damit ich verstehe, was hier steht? Die gute Nachricht ist: Es gibt jetzt eine Möglichkeit, das zu erreichen. Letztes Jahr
Wie Sie sehen können, können Sie einfach mit der Maus über die Seite fahren. Sobald das Programm auf ein Byte stößt, das es kennt, werden die Bytes hervorgehoben, die zusammen ein Datenelement bilden, und es werden Metadaten an der Seite angezeigt, darunter auch der Wert dieser Bytes.
Erledigt?
Nun, das ist noch lange nicht alles. Es gibt noch eine Menge Dinge, die hinzugefügt werden müssen, wie z.B. eine bessere Darstellung der Metadaten und eine Erklärung, die die Abhängigkeiten zwischen den dekodierten Daten und anderen Teilen der kodierten Darstellung zeigt. Aber es zeigt eine der Stärken von Preon: Durch die Erfassung der Metadaten über die Zuordnung zwischen der kodierten Darstellung und der Darstellung im Speicher ist Preon in der Lage, zu erklären, was dekodiert wird. Nichts von alledem war vorher in Preon vorhanden. Alles wurde dem Framework hinzugefügt, ohne eine einzige Zeile des Codes zu ändern.
Die Version von Preon, die dazu in der Lage ist, befindet sich derzeit auf Github. Verfasst von

Wilfred Springer
Unsere Ideen
Weitere Blogs
Contact
Let’s discuss how we can support your journey.



