在ProtocolBuffers中表示System.Decimal的最佳方式是什么?从这个问题开始,在ProtocolBuffers中表示System.Decimal对象的最佳方式是什么?好吧,protobuf-net会为您处理;它运行类型的属性,并完全支持十进制。由于proto中没有直接表示的decimal方法,它(当前)不会从“.proto”文件生成decimal属性,但会识别一些常见类型(“BCL.Decimal”或类似类型)并将它们解释为decimal。至于表示它-我在protobuf-netwiki区域有一个(现在我怀疑过时的)讨论文件;现在有一个protobuf-net的工作版本可以为您完成。毫无疑问,Jon和我今天晚些时候会继续研究这个问题;-p这个(在.proto中)的protobuf-net版本就像(来自这里):messageDecimal{optionaluint64lo=1;//底层值的前64位optionaluint32hi=2;//底层值的最后32位optionalsint32signScale=3;//小数位数和符号,在.NET和Java中可用的转换(以及任何其他人想要贡献的东西)。如果您乐于坚持使用.NET,并且正在寻找紧凑性,我可能会选择以下内容:messageDecimal{//96位尾数分成两块optionaluint64mantissa_msb=1;可选uint32mantissa_lsb=2;要求sint32exponent_and_sign=3;}符号可以用exponent_and_sign的符号来表示,指数是一个绝对值。使尾数的两个部分都可选意味着0意味着非常紧凑(但仍然区分0m和0.0000m等)。如果我们真的愿意,exponent_and_sign也可以是可选的。我不知道Marc的项目,但在我的端口中,我生成了部分类,因此您可以将System.Decimal和Protobuf.Common.Decimal(或其他)之间的转换放入部分类中。我向protobuf-csharp-port添加了一个补丁,它带有钩子,可以生成具有本机Decimal和DateTime结构的protobuf类。有线格式,它们由两个“内置”原型消息表示。这是链接:https://code.google.com/p/protobuf-csharp-port/issues/detail?id=1can=2&start=0&num=100&q=&cfpec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&ID=78以上是C#学习教程:在ProtocolBuffers中表示System.Decimal的最佳方式是什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
