我有一个程序需要接收 4 个字节并将它们转换为 IEEE-754 浮点数。字节被乱序传输,但我可以把它们按顺序放回去就好了。我的问题是将它们转换为浮动。代码的相关部分:
//Union to store bytes and float on top of each other
typedef union {
unsigned char b[4];
float f;
} bfloat;
//Create instance of the union
bfloat Temperature;
//Add float data using transmitted bytes
MMI.Temperature.b[2] = 0xD1;//MMIResponseMsg[7];
MMI.Temperature.b[3] = 0xE1;//MMIResponseMsg[8];
MMI.Temperature.b[0] = 0x41;//MMIResponseMsg[9];
MMI.Temperature.b[1] = 0xD7;//MMIResponseMsg[10];
//Attempting to read the float value
lWhole=(long) ((float)MMI.Temperature.f);
//DEBUGGING
stevenFloat = (float)MMI.Temperature.f;
lWhole
是一个长的,stevenFloat
是一个浮动。调试时,我可以看到我分配给字节数组的值被正确存储,但是 和 的值stevenFloat
不lWhole
正确。它们似乎徘徊在接近 0 或接近最大浮点/长值的位置。在我的编译器中,long 和 float 都是 32 位的。
有谁知道为什么这不起作用?当我收到要处理的代码时,它看起来是正确的,而且它似乎是一个常见的在线解决方案,我只是难住了。