Parsen und Anzeigen von CBOR-Daten
Eine Demonstration, wie Dateien im CBOR-Format analysiert werden können.
Dieses Beispiel zeigt, wie man die Klasse QCborStreamReader direkt zum Parsen von CBOR-Inhalten verwendet. Das Programm cbordump
liest Inhalte im CBOR-Format aus Dateien oder von der Standardeingabe und gibt den dekodierten Inhalt in einem für Menschen lesbaren Format auf stdout aus. Es kann eine Ausgabe in CBOR-Diagnosenotation (ähnlich wie JSON) oder eine ausführliche Ausgabe erzeugen, bei der jedes eingegebene Byte mit seiner Kodierung daneben angezeigt wird.
Die Klasse CborDumper
Die Klasse CborDumper enthält ein QCborStreamReader Objekt, das mit dem QFile Objektargument initialisiert wird, das an den CborDumper Konstruktor übergeben wird. Basierend auf den Argumenten ruft die dump-Funktion entweder dumpOne() oder dumpOneDetailed() auf, um den Inhalt auf die Standardausgabe auszugeben,
struct CborDumper { enum DumpOption { ShowCompact = 0x01, ShowWidthIndicators = 0x02, ShowAnnotated = 0x04 }; Q_DECLARE_FLAGS(DumpOptions, DumpOption) CborDumper(QFile *f, DumpOptions opts_); QCborError dump(); private: void dumpOne(int nestingLevel); void dumpOneDetailed(int nestingLevel); void printByteArray(const QByteArray &ba); void printWidthIndicator(quint64 value, char space = '\0'); void printStringWidthIndicator(quint64 value); QCborStreamReader reader; QByteArray data; QStack<quint8> byteArrayEncoding; qint64 offset = 0; DumpOptions opts; };
Die Funktion dumpOne()
Wenn Sie QCborStreamReader::type() einschalten, wird der Druck entsprechend dem Typ des aktuellen Wertes im Stream aktiviert. Handelt es sich bei dem Typ um ein Array oder eine Map, wird der Inhalt des Wertes durchlaufen und für jeden Eintrag wird die Funktion dumpOne() rekursiv mit einem höheren Einrückungsargument aufgerufen. Handelt es sich bei dem Typ um ein Tag, wird es ausgedruckt und dumpOne() wird einmal aufgerufen, ohne das Einrückungsargument zu erhöhen.
Die Funktion dumpOneDetailed()
Diese Funktion gibt sowohl die eingehenden Bytes als auch den dekodierten Inhalt in der gleichen Zeile aus. Sie verwendet Lambda-Funktionen, um die Bytes und den dekodierten Inhalt auszugeben, hat aber ansonsten eine ähnliche Struktur wie dumpOne().
CborTagDescription
Die Tabelle tagDescriptions
, die die verfügbaren CBOR-Tags beschreibt, wird automatisch aus einer XML-Datei erzeugt, die auf der Website iana.org verfügbar ist. Wenn dumpOneDetailed()
ein Tag meldet, verwendet es dessen Beschreibung aus dieser Tabelle.
Siehe auch QCborStreamReader und CBOR-Unterstützung in Qt.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.