gpt4 book ai didi

c - 在 ANSI C 中将 Int 值序列化到 char* 缓冲区

转载 作者:行者123 更新时间:2023-11-30 14:25:09 25 4
gpt4 key购买 nike

我尝试将结构字段 (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(我认为这是它的地址)复制到缓冲区而不是实际值。

非常感谢您的帮助!我尝试尽可能描述性的,希望你能帮助我。

最佳答案

But if I print: printf("offset: %ld \n",&packet->payload.offset), I get: offset: 167120959

那是因为您打印的是地址,而不是值。您的“序列化”方法没问题(除了字节顺序),因为 memcpy 需要地址。

I remove the '&' to the second argument to write '5' to the buffer [...] but if I don't, it copies 167120959 (which I supose it is it's address) to the buffer instead of the actual value.

错了。它从该地址复制 sizeof(long int) 字节

关于c - 在 ANSI C 中将 Int 值序列化到 char* 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com