解析和显示CBOR数据
演示如何分析CBOR格式的文件。
本示例显示如何直接使用QCborStreamReader类来解析CBOR内容。cbordump
程序从文件或标准输入读取CBOR格式的数据,并以可读格式将解码的内容输出到stdout。它可以输出CBOR诊断表示法(与JSON类似),或者可以生成详细输出,其中每个字节的输入都显示其编码。
CborDumper类
CborDumper类包含一个使用传递给CborDumper构造函数的QFile对象参数初始化的QCborStreamReader对象。根据参数,dump函数调用dumpOne()或dumpOneDetailed()将内容输出到标准输出
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; };
dumpOne()函数
启用QCborStreamReader::type(),可以根据流中当前值的类型打印适当的内容。如果类型是数组或映射,则迭代值的内部内容,并对每个条目递归调用具有更高缩进参数的dumpOne()函数。如果类型是标签,则打印出来,并且调用一次dumpOne()而不增加缩进参数。
dumpOneDetailed()函数
此函数将传入的字节和解码内容放在同一行上。它使用lambda函数打印字节和解码内容,但结构上类似于dumpOne()。
CborTagDescription
描述可用的CBOR标签的tagDescriptions
表自动从iana.org网站上可用的XML文件生成。当dumpOneDetailed()
报告一个标签时,它使用此表中的描述。
© 2024 Qt公司有限公司。此处包含的文档贡献归其各自所有者所有。此处的文档根据Free Software Foundation发布的GNU自由文档许可协议版本1.3的条款许可。Qt及其相关标志是芬兰及其它全球地区的The Qt Company Ltd.的商标。所有其他商标均归各自所有者所有。