我有一些定义如下的类,仅包含一些简单的数据类型
class A
{
public:
float xxx;
int yyy;
}
我想将该对象的向量转换为无符号字符的向量,反之亦然。有快速的解决方案吗?
谢谢!
让我猜猜,这个无符号char的向量实际上是某种序列化的数据?最简单的方法就是
std::vector<unsigned char> vec(sizeof(A));
memcpy(vec.data(), &a, sizeof(A));
您可以反向进行以恢复结构。它不关心填充(也将被复制)。如果要一个向量包含许多项,则只需创建所需大小的向量,然后按偏移量移动数据。
std::vector<A> source;
[...]
std::vector<unsigned char> vec(sizeof(A) * source.size());
for (size_t i = 0; i < source.size(); ++i)
{
memcpy(vec.data() + (sizeof(A) * i), &source[i], sizeof(A));
}