c++ vector<float> 转 QByteArray
时间: 2023-07-02 17:18:31 浏览: 65
可以使用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。
相关问题
c++ 中, std::vector<float> 如何转 QByteArray, 以及如何反转回来
将 `std::vector<float>` 转换为 `QByteArray`,可以使用 `QByteArray` 的构造函数,将 `std::vector<float>` 的数据指针和大小传递给它。反过来,将 `QByteArray` 转换回 `std::vector<float>`,可以使用 `std::vector<float>` 的 `assign` 函数,将 `QByteArray` 的数据指针和大小传递给它。
下面是示例代码:
```c++
#include <QByteArray>
#include <vector>
// 将 std::vector<float> 转换为 QByteArray
QByteArray vectorToByteArray(const std::vector<float>& vec) {
const char* data = reinterpret_cast<const char*>(vec.data());
return QByteArray(data, vec.size() * sizeof(float));
}
// 将 QByteArray 转换为 std::vector<float>
std::vector<float> byteArrayToVector(const QByteArray& byteArray) {
const float* data = reinterpret_cast<const float*>(byteArray.data());
int size = byteArray.size() / sizeof(float);
std::vector<float> vec;
vec.assign(data, data + size);
return vec;
}
```
使用示例:
```c++
std::vector<float> vec = { 1.2f, 3.4f, 5.6f };
// 将 std::vector<float> 转换为 QByteArray
QByteArray byteArray = vectorToByteArray(vec);
// 将 QByteArray 转换为 std::vector<float>
std::vector<float> vec2 = byteArrayToVector(byteArray);
```
需要注意的是,这个方法假设 `std::vector<float>` 是连续存储的,即数据在内存中是连续的。如果不是连续存储的,需要使用其他方法来进行转换。
QList<QByteArray>转QByteArray
QList<QByteArray>转QByteArray的方法是将QList中的每个QByteArray元素连接起来,形成一个新的QByteArray。可以使用QByteArray的join()函数来实现这个操作。
下面是一个示例代码:
```cpp
QList<QByteArray> list;
list << "Hello" << "World";
QByteArray result = list.join("");
```
在上面的代码中,我们首先创建了一个QList<QByteArray>对象,并向其中添加了两个QByteArray元素。然后,我们使用join()函数将列表中的元素连接起来,连接字符串为空字符串"",并将结果存储在result变量中。
注意:如果你希望在连接的结果中添加分隔符,可以将分隔符作为参数传递给join()函数。