2017-03-11 12 views
1

java.lang.Double.doubleToLongBitsを使用してJava doubleを8バイトに変換し、ネットワークに書き込んだり、BitConverter.ToDoubleを使用してC#でそれらのビットを読み取ることはできますか?Java Double.doubleToLongBits to C#BitConverter.ToDouble

C#docsはIEEE 754については何も言及していませんが、プラットフォームの依存性を示すエンディアンについて話すと、私は一般的なケースではないと考えています。 JavaとC#の両方のプロセスがインテルX64アーキテクチャー上で動作していることがわかったらどうなりますか? LinuxではJavaを使用し、WindowsではC#を使用します。詳細は興味深いでしょう。

答えて

2

可能であれば、C#ではIEEE 754ダブルを使用することができます。唯一の問題は、ネットワーク経由で転送する際のエンディアンである可能性があります。そのため、アーキテクチャが使用しているものを選択すれば正しく転送されます。

ByteBufferを使用する場合は、簡単に目的のエンディアンを選択できます。 double関数を使用してください。doubleToLongBitsを使用する必要はありません。これは、double表現をlongに変換する必要がある場合に備えてのことです。

+0

ByteBufferにはLITTLE_ENDIAN命令が割り当てられていない限り、実際には、すべてのアーキテクチャでJava操作が常にビッグエンディアンであるため、ByteBufferを使用する必要があります。 – VGR

+0

@VGR JVM自体はネイティブバイトオーダリングを使用しますが、ライブラリはバイナリデフォルトをビッグエンディアンに読み書きします。 –