将QByteArray转为结构体
时间: 2023-06-23 13:43:21 浏览: 151
在 QT 中,可以使用 `QDataStream` 类进行 QByteArray 和结构体之间的转换。
以下是一个示例代码,其中 `MyStruct` 是需要转换的结构体:
```c++
struct MyStruct {
int a;
double b;
};
// 创建一个 QByteArray 对象
QByteArray byteArray;
// 创建一个 QDataStream 对象,将其绑定到 QByteArray 对象上
QDataStream out(&byteArray, QIODevice::WriteOnly);
// 设置数据流的版本号
out.setVersion(QDataStream::Qt_5_15);
// 将结构体序列化并写入数据流中
MyStruct myStruct = {1, 2.0};
out << myStruct;
// 创建另一个 QDataStream 对象,将其绑定到 QByteArray 对象上
QDataStream in(&byteArray, QIODevice::ReadOnly);
// 设置数据流的版本号
in.setVersion(QDataStream::Qt_5_15);
// 从数据流中读取数据并反序列化为结构体
MyStruct newStruct;
in >> newStruct;
// 打印反序列化后的结构体成员变量值
qDebug() << newStruct.a << newStruct.b;
```
在上述代码中,`out << myStruct` 将 `MyStruct` 序列化为二进制格式,并将其写入到 `QByteArray` 中。而 `in >> newStruct` 则从 `QByteArray` 中读取二进制数据,并将其反序列化为 `MyStruct` 对象。
需要注意的是,在进行序列化和反序列化时,需要使用相同的数据流版本号。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)