c++ - C/C++中结构体的序列化和反序列化
问题描述
我有一个像这样的结构:
typedef struct myStruct
{
int attr;
char *name;
size_t nameSize;
}
我想序列化它并序列化它。我找到了答案,但他们都使用了更简单的结构(没有指针)。此外,在我的函数中,我必须接收指向结构的指针,而不是结构本身。所以我不能使用sizeof。
如何将其序列化到缓冲区中,以便以后反序列化它?
int serializeData(myStruct *componentInfo, void *buffer, size_t bufferSize, size_t *result)
{
int dataSize = 0;
dataSize += sizeof(int);
dataSize += strlen(componentInfo->name);
dataSize += sizeof(size_t);
char data[dataSize+1];
int offset =0;
memcpy(data, &componentInfo->attr, sizeof(int));
offset+=sizeof(int);
memcpy(data + offset, &componentInfo->nameSize, sizeof(size_t));
offset+= sizeof(size_t);
memcpy(data + offset, componentInfo->name, componentInfo->nameSize);
offset+= componentInfo->nameSize;
printf("%s",data);
printf("a %zu",strlen(data));
return 1;
}
解决方案
推荐阅读
- python - Facebook Prophet - 有规律间隙的交叉验证
- java - 在Java中的if条件的同一行中添加Null检查并访问Integer值是否有效
- javascript - Jquery - 根据两个下拉菜单中的选择显示 Json 值
- python - Python - 使用 python numpy 数组的多进程共享内存?
- python - 检查对象是否已经存在,如果存在则执行一些代码
- feature-extraction - 寻找用于信息提取的音频分析库
- wordpress - 盖茨比问题中的 createPages ;重复和未呈现的内容
- ios - 如果用户刚刚从商店下载了应用程序,是否可以处理深层链接?
- tensorflow - TensorFlow-Keras 生成器:关闭自动分片或将 auto_shard_policiy 切换为 DATA
- javascript - 不确定如何在本机反应中将数组映射到组件