c# - 将 float 更改为 double

标签 c# serialization protobuf-net

如果我将我的字段从 float 更改为 double,是否会破坏格式的向后兼容性?它应该是有道理的,但在我的测试中它没有。

另一方面,我猜 float 和 double 有不同的线类型,这可以让 protobuf-net 正确处理这种情况并进行转换。

有没有涵盖此类内容的文档?

最佳答案

tl;博士;版本:“没关系”

在线路级别,这是固定 4 字节编码与 8 字节编码之间的区别,所以如果你们这样做, future 的序列化将为每个值占用几个额外的字节。

在 protobuf-net 的情况下,默认情况下它是非常宽容的 - 所以这不会破坏您现有的数据。它尝试尽可能多地处理常见的/可能的更改,并且处理得很好。其他实现可能更严格,所以如果您将其用于互操作目的,我不能对“另一端”(意思是:其他一些 protobuf 实现)发表任何声明。为了帮助解决这个问题,还有一个可选的/选择加入的严格模式(默认情况下禁用)。如果您启用了that,则允许精确表示(因此:32 位表示 float ,64 位表示 double )。

关于c# - 将 float 更改为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965642/

相关文章:

c# - c#中将格式化的时间字符串保存为文件名问题

c# - 找不到资源 asp.net mvc

java - HashMap 和 float[] 上的 Hadoop 序列化

protobuf-net - 使用 protobuf-net 时将空字符串反序列化为空字符串

c# - 'NotSupportedException : Type cannot be represented as a default value' after updating protobuf-net

c# - 重用具有不同 ViewModel 的 usercontrol(View)

Windows CE 5 中的 C# 应用程序最终崩溃

c# - 如何在 .NET C# 中转换反序列化 php 对象

java - 类对反序列化无效 - 从文件反序列化但不是 blob?

c# - 通过 Web Api 中的请求支持 Protobuf-net