【发布时间】:2012-02-02 04:01:12
【问题描述】:
我有一个我正在序列化的对象,其中包含我使用 protobuf-net 通过网络发送的许多双精度和双精度结构。问题是,我不需要所有的精确度。
例如,我有这样的事情,其中外部库返回双精度。
double Volts = Sampler.GetValue(); //Volts is a value like 4.35(...)
但我真的只需要两个小数点的精度。将其通过网络编码为双精度需要 64 位。将其编码为具有 2 位小数精度的字符串(“4.35”)实际上可能会占用更少的空间。但是我有转换问题要处理。
我一直在探索 v2 选项,但我还没有看到这样的功能。如果您可以将浮点值编码为可变长度的精度,我可以看到它如何节省大量空间。
我曾考虑将其乘以一个整数发送,然后在远端将其转换回,但据我所知,这需要我对我的基类对象进行重大更改(而且我在反序列化期间使用合并选项)。
有什么想法或聪明的解决方法吗?
顺便说一句,protobuf-net 非常棒,具有大量的可配置性。感谢您制作了如此出色的程序。
【问题讨论】:
-
“通过网络将其编码为双精度需要 64 个字节。” - 不,它需要 64 个位 = 8 个字节
-
如果你真的很在意空间,可以使用“半浮动”(err..bandwidth 在这种情况下)。
-
谢谢,修正了位/字节错字。
标签: c# serialization protobuf-net