背景私の32ビット整数がfloatに正しく変換されないのはなぜですか?すべての
まず、私はいくつかの進データ... 0x3AD3FFD6
を持っています。私は次のようにバイトの配列としてデータを表現することを選択した:
byte[] numBytes = { 0x3A, 0xD3, 0xFF, 0xD6 };
Iは、以下のコードを実行することにより、その単精度浮動小数点値にバイトのこの配列を変換しよう:
float floatNumber = 0;
floatNumber = BitConverter.ToSingle(numBytes, 0);
私はthis IEEE 754 Converterを使用して、このオンラインを計算し、次の結果持っている:
0.0016174268
を私はC#のコードの出力は、同じものを生産するために期待されるが、代わりに私は何かのような...
-1.406E + 14
質問を取得しています
ここで何が起こっているのか誰でも説明できますか?
バイトの順序を逆にして、結果を比較します。それから、http://stackoverflow.com/questions/2945174/floating-point-endianness(関連する)を参照してください。BitConverterは特定のエンディアンを使用します。 – user2864740
@ user2864740特定のものではなく、実際のコンピュータが使用するものです。異なるプラットフォームでは動作が異なります。 – Adrian
これを試してください:floatNumber = BitConverter.ToSingle(numBytes.Reverse()。ToArray()、0); – jdweng