Hi,
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.

Regards,
Piote

Recommended Answers

All 3 Replies

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. :)

Thanks for your help!

Regards,
Piote

And how do I convert it the other way round.

Regards,
Sidharth Shah.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.