Cocoa Decimals和Protocol Buffers,与.NET的兼容性

时间:2011-02-24 11:31:35

标签: .net cocoa nsdecimalnumber decimal

我一直在使用使用CocoaTouch编写的iOS应用程序使用Protocol Buffers,并且遇到了可能相当于带有十进制数字的新手错误。

协议缓冲区没有本机十进制类型 - 有关所有类型,请参阅http://code.google.com/apis/protocolbuffers/docs/proto.html#scalar。相反,我做了(现在显然是不正确的)假设,浮点数可以代替小数。它没有,因为有四舍五入的问题。

Cocoa在NSDecimal.h中有一组C函数,它们看起来很吸引人。但是,由于我正在与一个用.NET编写代码的服务器进行通信,因此我需要一种方法来转换为两种系统都可以理解的格式。

我假设我将使用原始的“bytes”类型在两个系统之间传输数据,并在每个环境中转换为本机十进制类型:Cocoa端的NSDecimal,.NET端的Decimal。在这里,我不清楚如何继续。

我应该使用什么中间格式 - 二进制编码的小数似乎是一种可能性,但我必须自己实现一个算法来转换两个系统。

是否有一个字节编码的十进制格式,.NET和Cocoa都说我可以使用?

非常感谢。

1 个答案:

答案 0 :(得分:1)

随机一起攻击protobuf-net的一种相当随意的格式,它映射到.NET decimal类型 - 布局is here。这适用于.NET-to-.NET,但我不太了解Cocoa小数,知道它是如何适合的。