Followers 0

# NJ and IEEE 754 float

## 3 posts in this topic

Dear Colleagues,

could you please give a tip for the following

Via RS485 non-standard protocol I receive from a slave device some data which is presented as IEEE754 24-bit float. Moreover I receive a byte array

E.g. I receive byte[0] = 0x41 byte[1] = 0xF0 byte[2] = 0x00, which is IEEE754 representation of 30.00

So how do I obtain the REAL value from byte array?

Searched through Instructions Reference Manual and didn't find no suitable instructions. No word about conversion byte array to IEEE754 float

Thanks!

##### Share on other sites

IEEE754 24-bit is actually a 32-bit value for what I understand. 24-bit for significant digits, and remaining 8-bit is the exponent bits.

So from your data, the actual data should be :

byte[0] = 0x41 --> 3rd Significant bits
byte[1] = 0xF0 --> 2nd Significant bits
byte[2] = 0x00 --> 1st Significant bits
byte[3] = 0x00 --> Exponent bits

Now there is a function which called AryByteTo, which can convert Byte Arrays to almost anything. The only issue you have to solve is to rearrange the byte order, into something like this:

byte[0] = 0x00 --> Exponent bits
byte[1] = 0x00 --> 1st Significant bits
byte[2] = 0xF0 --> 2nd Significant bits
byte[3] = 0x41 --> 3rd Significant bits

To make my point clear, here's a screenshot of a test :

Edited by innoaloe
1 person likes this

##### Share on other sites

innoaloe, thank you so much!

24-bit IEEE has only 15 bit mantissa ( 1 bit sign + 8 bit exponent + 15 bit mantissa), it's just less accurate than 32-bit IEEE, which has 23-bit mantissa