将结构转换为字节向量
Convert a struct to vector of bytes
在我的C++应用程序中,我有这个结构
typedef struct
{
int a;
int b;
char *c
}MyStruct
我有一个例子:
MyStruct s;
我也有这个定义:
vector<byte> buffer;
我想插入\将s
结构转换为缓冲区向量。
在C++中最好的方法是什么?
谢谢。
最好的方法是使用范围复制构造函数和低级强制转换来检索指向结构内存的指针:
auto ptr = reinterpret_cast<byte*>(&s);
auto buffer = vector<byte>(ptr, ptr + sizeof s);
另一种方法是,您可以将字节缓冲区强制转换为目标类型(但它必须是相同的类型,否则会违反严格的混叠):
auto p_obj = reinterpret_cast<obj_t*>(&buffer[0]);
然而,对于索引≠0(从技术上讲,我想对于索引=0也是,但这似乎不太可能),请注意内存对齐不匹配。因此,一种更安全的方法是首先将缓冲区复制到正确对齐的存储器中,然后从那里访问指针。
相关文章:
- 使用 std::vector::reverse_iterator 将 int 序列化为字节向量?
- C++如何将字符数组转换为字节向量(向量<byte>)
- 如何在C++中将字节向量(std::vector<uint8_t>)转换为不同的uint32_t,uint16_t和uint8_t变量
- 通过浮点指针操作字节向量
- 使用字节向量作为其他类型的原始存储是一种好的做法吗
- 如何以C++为单位计算向量中的字节数?
- 如何将向量>>>>字节迭代到函数
- 如何从文件中读取 n 个字节并使用<uint8_t>迭代器将它们放入向量中?
- 以零字节作为定界符/终端的字节加入(连接)字符串向量
- 使用原始字节向量作为提升序列化的存档的任何方法
- 将整数向量转换为字节数组向量,然后调用每个字节数组
- 将字节向量转换为浮点数向量
- 将结构添加到字节向量,然后添加另一个
- 将结构转换为字节向量
- 字节向量到十六进制字符串流 DWORD 对齐
- 将浮点向量转换为字节向量并返回
- 如何将wstring转换为字节向量
- 创建垫子后,从字节向量将图像加载到垫子上
- 在c++中将字节串拆分为字节向量
- 将成员变量复制到字节向量中