1

x86 VC++ (プロジェクト仕様による制約) を使用してバイナリ Java データのストリームを逆シリアル化していますが、シリアル化された double の値を正しく解析するのに非常に苦労しています。

仮定:

  • Java double は VC++ x86 long double によって最もよく表されます。

私が試したこと:

  • ストレート デシリアライゼーションとバイトスワップ デシリアライゼーション。どちらも正しい値を返しません。(ビッグエンディアンからリトルエンディアンにバイトスワップされると、整数を正常にデシリアライズできます。)
  • Java シリアライゼーション ドキュメントは役に立ちませんでした。

私が恐れていること:

  • 指数と仮数が何らかの形でそれぞれバイト交換されていること。

助けてくれてありがとう。

ケン

4

1 に答える 1

0

答えは、単純なバイトスワップだということです。ただし、組み込みの C++ _byteswap 関数を使用すると、符号なし整数への暗黙的なキャストが実行され、double のデータがマングルされます。

How to byteswap a double?のバイトスワップ ソリューションの 1 つを使用します。トリックをしました。

于 2013-09-09T12:39:28.133 に答える