2010-11-29 16 views
7

私はC#を使用していて、いくつかのコントローラからバイト配列を読み込み、その型に変換しています。 float値を除くすべての値(int、string)OK。 取得する値は533174.1です。 が、配列Cで浮動小数点型に4バイト配列を変換する問題#

byteArr[0]=2 
byteArr[1]=73 
byteArr[2]=98 
byteArr[3]=43 

いくつかちんぷんかんぷん値を取得を読むとき。 私はSystem.BitConverter.ToDouble(bytesArr,0)と他の方法を成功せずに使用しました。 助けてください。ありがとう、 Igal。

答えて

14

バイトがワードスワップされています。この関数は、バイト配列を適切に浮動小数点に変換する必要があります:

static float ToFloat(byte[] input) 
{ 
    byte[] newArray = new[] { input[2], input[3], input[0], input[1] }; 
    return BitConverter.ToSingle(newArray, 0); 
} 

ToFloat(new byte[]{2,73,98,43}) == 533174.1 
+0

こんにちは。あなたは本当に助けてくれました。ありがとう。 – Igal

2
  1. エンディアンはどうですか?あなたは言葉の順序を逆転しようとしましたか?ウィンドウでは、533174.1は98,43,2,73です。
  2. 4バイトはシングル(ToSingle)で、ダブルではありません。
+0

ありがとう、それは助けました。 – Igal

関連する問題