Qt5 中 QDataStream 的用法以及数据结构

目录 Content
[hide]

了解了一下 QDatatStream 的简单用法,用文档的代码测试了结果,可以熟悉下其数据格式。

代码实现

建立一个console项目,添加下面读写 QDatatStream  的代码

main.cpp

#include <QCoreApplication>
#include <QtCore>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //wtite to file
    QFile file("file.dat");
    file.open(QIODevice::WriteOnly);
    QDataStream out(&file);   // we will serialize the data into the file
    out << QString("the answer is");   // serialize a string
    out << (qint32)42;        // serialize an integer
    file.close();
    qDebug()<<"write done!";
    //read from file
    file.open(QIODevice::ReadOnly);
    QDataStream in(&file);    // read the data serialized from the file
    QString str;
    qint32 i;
    in >> str >> i;           // extract "the answer is" and 42
    qDebug()<<str<<i;
    file.close();
    qDebug()<<"read done!";

    return a.exec();
}

运行结果

运行后,会生成一个file.dat文件,同时qDebug输出我们感兴趣的内容
QdataStream_test

数据结构

用十六进制编辑器打开file.dat文件,可以看到数据结构如下
QdataStream_test_hex
数据结构

  1. 开始4个byte存储字符串的长度,其值为1A,换算成十进制为26
    每个字符占用2个字节,所以”the answer is”总共26个字节
    然后就是 0074 代表 t,0068代表h,如此类推到最后 0073代表s
  2. 然后4个byte存储的整型42的数值,十六进制为2A

源码下载

扩展阅读

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.