I am trying to convert a Big Endian data file to something readable on most Windows PCs. I do ok with integer data but I cannot convert the floating points (32-bit IEEE).
1) Is it possible for a BinaryReader to account for Big Endian, such that .ReadSingle() would return the correct value?

2) If I have to read the bytes one at a time and reverse them, is there a way to type cast it to a float?

I pursued #2 for a while, but C# type-casting seems to convert the actual value and not the binary that represents it. So the result is something like 1.12E9 instead of 89.9.
I really don't know how to make it work correctly. I would be grateful for any help.


11 Years
Discussion Span
Last Post by sidharthrshah

1) Yeah, you can tell the BinaryReader what encoding to use with the System.Text.Encoding class.

BinaryReader reader = new BinaryReader( stream, Encoding.BigEndianUnicode );

2) No, but you can use the System.BitConverter class to turn an array of bytes into whatever type it supports. And it supports both single and double precision floating point conversions. :)

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.