用于在C ++中存储double的可移植二进制文件

时间:2014-01-11 15:23:33

标签: c++ file

让我们考虑2台PC:PC A需要64位(8字节)来存储双变量,PC B需要128位(16字节)来存储双变量。在A上使用我的应用程序创建二进制文件。文件被复制到B,我的程序正在读取文件。让我们考虑一下该文件包含10个双变量。为了说明该文件包含如下信息:

8888888888

// 8代表8个字节

现在,当B正在阅读时,它会将数据视为

1616161616

//所以它只读取5个变量而不是10个变量,并且这些变量中存储的值太多。

所以我的问题是,你如何管理读/写,以致上述情况不会发生,

  1. 数据只能存储在二进制文件中
  2. 数据由double []中的appication存储,并且无法转换为字符串,因为在现实生活中有数百万个双变量且翻译时间过长
  3. 我尝试通过读取适当长度的char *中的数据。但是当通过reinterpret_cast将char *转换为double时,double具有垃圾值。

1 个答案:

答案 0 :(得分:2)

使用现有的序列化库,例如protobuf或较新的cap'nproto(针对最常见的用例进行优化)。