在文件中序列化多个float数组的最佳方法

时间:2017-04-20 05:49:30

标签: arrays serialization floating-point protocol-buffers msgpack

我正在尝试序列化多个float(单精度)数组,以最小的大小跨越多种语言(python / java / c / cpp)。

我预计它需要浮点数组头,每个浮点数需要4个字节。但msgpack似乎需要5bytes。 https://github.com/msgpack/msgpack/issues/198#issue-87308597

是否有用于序列化浮点数组的推荐库?每个浮点数为4个字节或更少?或者只使用原始字节数组?

1 个答案:

答案 0 :(得分:1)

协议缓冲区支持"打包"一些基元的数组;基本上,成本计算如下:

  • 数组的varint字段标头(低字段数字为1个字节)
  • 字节数的varint长度前缀
  • 字节数(单精度每个值4个字节,双精度每个值8个字节)

100个单精度浮标与"打包"字段5中的选项(任意)将花费1 + 2 + 400 = 403字节。