赞
踩
QDataStream和QByteArray都是Qt中用于序列化和反序列化数据的类。
QDataStream可以将Qt数据类型(如QString、QByteArray等)和自定义数据类型序列化为二进制格式,并写入文件或网络流中。同时,也可以从文件或网络流中读取二进制数据并反序列化成相应的数据类型。
QByteArray则是一个动态数组,可以方便地存储二进制数据。它提供了一些方法来访问和操作字节数组中的数据,例如append()、at()、mid()等。同时,QByteArray也有与QDataStream配合使用的方法,可以将数据序列化到字节数组中,或从字节数组中反序列化数据。
通常情况下,QDataStream用于将数据序列化到文件或网络流中,而QByteArray用于在内存中存储二进制数据。如果需要将数据先序列化到内存中,再写入文件或网络流,也可以将QByteArray传递给QDataStream进行数据的序列化和反序列化。
可以使用QDataStream将数据写入QByteArray中,方法如下:
QByteArray byteArray; QDataStream out(&byteArray, QIODevice::WriteOnly); out << QString("Hello") << 12345; // 将QString和int类型数据写入QByteArray中
首先创建一个空的QByteArray对象,然后创建一个QDataStream对象,并将其与QByteArray对象关联。使用QDataStream的<<运算符将数据写入QByteArray中。
写入完成之后,可以通过QByteArray的data()方法获取指向数据首位的指针,通过size()方法获取数据长度,例如:
const char* data = byteArray.data(); int size = byteArray.size();
可以使用QDataStream从QByteArray中读取数据,方法如下:
复制代码
QByteArray byteArray; // 先将数据写入QByteArray中 QDataStream out(&byteArray, QIODevice::WriteOnly); out << QString("Hello") << 12345; // 从QByteArray中读取数据 QDataStream in(byteArray); QString str; int num; in >> str >> num;
首先创建一个QByteArray对象,并使用QDataStream将数据写入到其中。然后再创建一个QDataStream对象,并将其与QByteArray对象关联。使用QDataStream的>>运算符从QByteArray中读取数据。
在读取数据时,需要按照先后顺序对应好数据类型和变量,否则可能会出现数据格式不一致的问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。