Convert float to bytes
union {
float f;
uint8_t ui8[4];
//uint32_t ui32; //<<Could also use if you wanted
} MyFloatBytesUnionValue;
MyFloatBytesUnionValue.f = 1.234;
for (Index = 0; Index < 4; Index++)
printf ("byte %d is %02x\n", Index, MyFloatBytesUnionValue.ui8[Index]);
Convert bytes to float
union {
float f;
uint8_t ui8[4];
//uint32_t ui32; //<<Could also use if you wanted
} MyFloatBytesUnionValue;
MyFloatBytesUnionValue.ui8[3] = 0x1f;
MyFloatBytesUnionValue.ui8[2] = 0x85;
MyFloatBytesUnionValue.ui8[1] = 0x45;
MyFloatBytesUnionValue.ui8[0] = 0x41;
//Or you could do this:
//MyFloatBytesUnionValue.ui32 = ((uint32_t)byte_value[3] << 24) | ((uint32_t)byte_value[2] << 16) | ((uint32_t)byte_value[1] << 8) | (uint32_t)byte_value[0];
printf ("float is %f\n", MyFloatBytesUnionValue.f);
Note, if this appears not to work (you get zero out but with a valid float value in) then try reversing the byte order!
Example
The following input bytes 0x1f, 0x85, 0x45, 0x41 will produce a float output of 12.345
