5

私は、CocoaTouch を使用して作成された iOS アプリで Protocol Buffers を使用してきましたが、10 進数の初歩的な間違いに相当するものに遭遇しました。

プロトコル バッファには、ネイティブの 10 進数型はありません。すべての型については、 http://code.google.com/apis/protocolbuffers/docs/proto.html#scalarを参照してください。代わりに、浮動小数点数が 10 進数の代わりに機能するという (明らかに正しくない) 仮定を立てました。丸めの問題があるため、そうではありません。

Cocoa には NSDecimal.h に一連の C 関数があり、代わりに使用すると魅力的に見えます。ただし、.NET で記述されたコードを持つサーバーと通信しているため、両方のシステムが理解できる形式に変換する方法が必要になります。

生の「バイト」型を使用して 2 つのシステム間でデータを転送し、各環境でネイティブの 10 進数型 (Cocoa 側では NSDecimal、.NET 側では Decimal) に変換すると仮定します。進め方がよくわからないのはここです。

どの中間形式を使用する必要がありますか? 2 進化 10 進数は 1 つの可能性のように思えますが、両方のシステムで変換するにはアルゴリズムを自分で実装する必要があります。

.NET と Cocoa の両方で使用できるバイトコード 10 進形式はありますか?

どうもありがとう。

4

1 に答える 1

1

protobuf-net のかなり恣意的な形式をランダムdecimalにハッキングしました。これは .NETタイプにマップされます - レイアウトは hereです。これは .NET から .NET への変換ではうまく機能しますが、Cocoa の 10 進数がどのように適合するかを知るには十分ではありません。

于 2011-02-24T11:39:45.603 に答える