qbytearray转vector
时间: 2023-10-23 17:23:42 浏览: 102
您可以使用`std::vector<uint8_t>`来存储QByteArray中的数据。以下是将QByteArray转换为std::vector<uint8_t>的示例代码:
```c++
QByteArray qByteArray = "Hello, world!";
std::vector<uint8_t> vec(qByteArray.begin(), qByteArray.end());
```
此代码将QByteArray转换为std::vector<uint8_t>,并将其存储在名为vec的变量中。请注意,我们使用QByteArray的begin()和end()函数来获取指向其数据的指针,并将其传递给std::vector<uint8_t>的构造函数。
相关问题
c++ vector<float> 转 QByteArray
可以使用QByteArray的构造函数将vector<float>转换为QByteArray,然后使用QDataStream将QByteArray序列化为二进制数据。以下是示例代码:
```c++
#include <QByteArray>
#include <QDataStream>
#include <vector>
std::vector<float> vec = { 1.2f, 3.4f, 5.6f };
QByteArray byteArray(reinterpret_cast<const char*>(vec.data()), vec.size() * sizeof(float));
QByteArray serializedData;
QDataStream stream(&serializedData, QIODevice::WriteOnly);
stream << byteArray;
// 现在 serializedData 包含了 vector<float> 的二进制表示
```
请注意,此代码中的vector<float>必须是连续存储的。如果不是,则需要使用其他方法将其转换为QByteArray。
QByteArray 转QVector<double >
可以使用QDataStream来实现QByteArray到QVector<double>的转换。具体实现可以参考下面的代码:
```cpp
QByteArray byteArray = ...; // 待转换的QByteArray
QVector<double> vector;
QDataStream stream(&byteArray, QIODevice::ReadOnly);
while (!stream.atEnd()) {
double value;
stream >> value;
vector.append(value);
}
```
这段代码中,我们首先创建了一个QByteArray对象byteArray,然后创建了一个QDataStream对象stream,将其绑定到byteArray上,并且设置其为只读模式。
接下来,我们通过一个while循环,从stream中不断读取double类型的数据,并且将其添加到QVector<double>对象vector中。
最终,vector中就存储了从QByteArray转换而来的double类型的数据。