I'm using C# and reading bytes array from some controller and converting them to their types. all values (int,string) OK except the float values. The value that suppose to get is 533174.1. but when reading the array
byteArr[0]=2
byteArr[1]=73
byteArr[2]=98
byteArr[3]=43
getting some gibberish value.
I used the System.BitConverter.ToDouble(bytesArr,0)
and other methods without success.
please help.
Thanks,
Igal.
Yes it has 4 bytes only but it is not guaranteed.
The size of a float or other data types for that matter is dependent upon the system. It has to do with the hardware architecture and the compiler. This float, 10498.429 , would also be 4 bytes in memory. If a given computer system had a float size of 4 bytes then all floats are 4 bytes.
Your bytes are coming out word-swapped. This function should convert your byte array to floats properly:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With