Parsen und Anzeigen von CBOR-Daten
Eine Demonstration, wie Dateien im CBOR-Format analysiert werden.
Dieses Beispiel zeigt, wie die Klasse „ QCborStreamReader “ direkt zum Parsen von CBOR-Inhalten verwendet wird. Das Programm „ cbordump “ liest Inhalte im CBOR-Format aus Dateien oder der Standardeingabe ein und gibt die dekodierten Inhalte in einem für Menschen lesbaren Format an stdout aus. Es kann die Ausgabe in der CBOR-Diagnosekonvention (die JSON ähnelt) vornehmen oder eine ausführliche Ausgabe erzeugen, bei der jedes eingegebene Byte zusammen mit seiner Kodierung angezeigt wird.

Die CborDumper-Klasse
Die Klasse `CborDumper` enthält ein ` QCborStreamReader `-Objekt, das mithilfe des an den `CborDumper`-Konstruktor übergebenen ` QFile `-Objekts initialisiert wird. Basierend auf den Argumenten ruft die Dump-Funktion entweder `dumpOne()` oder `dumpOneDetailed()` auf, um den Inhalt an die Standardeingabe 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()`
Durch Aufruf von ` QCborStreamReader::type()` wird eine dem Typ des aktuellen Werts im Stream entsprechende Ausgabe aktiviert. Handelt es sich bei dem Typ um ein Array oder eine Map, wird der Inhalt des Werts durchlaufen, und für jeden Eintrag wird die Funktion `dumpOne()` rekursiv mit einem um einen Schritt erhöhten Einrückungsargument aufgerufen. Handelt es sich bei dem Typ um ein Tag, wird dieses ausgegeben und `dumpOne()` 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 derselben Zeile aus. Sie verwendet Lambda-Funktionen, um die Bytes und den dekodierten Inhalt auszugeben, weist aber ansonsten eine ähnliche Struktur wie `dumpOne()` auf.
CborTagDescription
Die Tabelle „ tagDescriptions “, die die verfügbaren CBOR-Tags beschreibt, wird automatisch aus einer XML-Datei generiert, 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“.
© 2026 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.