より良い書き方:
byte[] bytes = new byte[]{ 0x42, 0xE6, 0x56, 0x00 }; // Big endian data
if (BitConverter.IsLittleEndian) {
Array.Reverse(bytes); // Convert big endian to little endian
}
float myFloat = BitConverter.ToSingle(bytes, 0);
BitConverter
プラットフォームのエンディアンを使用することに注意してください。
IEEE-754 Analysisでテストしましたが、ソース データは本当にビッグ エンディアンであるように見えるので、これが正しい書き方です。
知らないかもしれませんが、リトル エンディアン プラットフォームBitConverter.GetBytes(0x42E65600);
に乗るでしょう。byte[]{ 0x00, 0x56, 0xE6, 0x42 }
16 進数リテラルの記述を主張する場合は、エンディアンを変換する必要はありません (常に正しいため、@George のコメントを参照してください)。
byte[] bytes = BitConverter.GetBytes(0x42E65600);
float myFloat = BitConverter.ToSingle(bytes, 0); // Always be correct