gpt4 book ai didi

c - 将数据序列化为一个连续的数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:04 24 4
gpt4 key购买 nike

我希望能够将对象序列化为连续的字节流。两个问题:

1) char 数组是否适合这个任务?如果不是,什么是更好的选择?

2) 这样做最有效的是什么?到目前为止,我所做的是使用 memcpy。例如,是否可以在不通过 memcpy 的情况下将 double 转换/转换为 8 个字节的 chars,反之亦然?

我很清楚这方面的外部库,但我喜欢学习新东西。

最佳答案

  1. 是的,char 是该任务的绝佳选择。

  2. 如果您将结果存储到一个文件中并在同一架构上再次读取它,memcpy 就可以了。但是如果你想通过socket传递或者在别的地方打开它,你就得更加小心了。对于 float 和整数类型,表示和字节顺序始终是一个问题。

不要对 float /整数执行简单的 memcpy(并避免更多地从缓冲区(严格的别名和 UB)转换它)。

对于 float ,查找这两个函数 frexp() 和 ldexp()。网上有很多,所以没有必要在这里复制它。

对于积分,你可以这样做:

buffer[0] = integer >> 24;  
buffer[1] = integer >> 16;
buffer[2] = integer >> 8;
buffer[3] = integer;

这保证得到相同的数字。

关于c - 将数据序列化为一个连续的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242698/

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