用QT实现序列化和反序列化
时间: 2023-10-30 15:50:03 浏览: 220
序列化和反序列化是将对象或数据转换为字节流或文本格式以便于存储或传输的过程。在QT中,可以使用QDataStream类实现序列化和反序列化。
序列化:
1. 创建一个QByteArray对象,用于存储序列化后的数据。
2. 创建一个QDataStream对象,并设置设备为QIODevice::WriteOnly,将QByteArray对象作为设备。
3. 使用QDataStream对象的<<运算符将要序列化的数据写入QByteArray对象中。
4. 关闭QDataStream对象。
反序列化:
1. 创建一个QDataStream对象,并设置设备为QIODevice::ReadOnly,将包含序列化数据的QByteArray对象作为设备。
2. 使用QDataStream对象的>>运算符将序列化的数据读取到相应的变量中。
3. 关闭QDataStream对象。
示例代码:
//序列化
QByteArray byteArray;
QDataStream out(&byteArray, QIODevice::WriteOnly);
out << QString("Hello World");
out << 123;
out << 3.14;
out << QVector<int>{1,2,3};
out.device()->seek(0); //重置设备指针
qDebug() << byteArray.toHex(); //输出序列化后的字节流
//反序列化
QByteArray byteArray2 = QByteArray::fromHex("0000000b48656c6c6f20576f726c64007b000000fb4048f5c3");
QDataStream in(&byteArray2, QIODevice::ReadOnly);
QString str;
int i;
double d;
QVector<int> vec;
in >> str;
in >> i;
in >> d;
in >> vec;
qDebug() << str << i << d << vec; //输出反序列化后的数据
阅读全文