我试图将结构字段(int)序列化为 char* 缓冲区,但我认为我做错了。
这就是我用来复制此字段的内容。
memcpy(payload + offset, &packet->payload.offset, sizeof(long int));
packet->payload.offset 是一个 long int 并且包含值“5”(硬编码),请注意:
如果我打印:printf("offset: %ld \n", packet->payload.offset);
我得到:offset: 5
但是如果我打印: printf("offset: %ld \n",&packet->payload.offset)
,我会得到:offset: 167120959
如果在 memcopy 中我删除了第二个参数的 '&' 以将 '5' 写入缓冲区,则会导致分段错误,但如果我不这样做,它会将 167120959(我认为它是地址)复制到缓冲区而不是实际值。
非常感谢您的帮助!我试图尽可能地描述,希望你能帮助我。