按IEEE754标准,32位浮点数的标准格式为
S为浮点数的符号位,占1位,0为正数,1为负数
E是阶码,占用8位,将浮点数的指数真值e变为阶码E时,将e加上一个固定偏移值127.
M是尾数,占用23位
STM32程序
float Hex2Float(u8 *pMem1)
{
u8 i;
u32 number=0;
u8 sign;
u8 exponent;
float mantissa;
for(i=0;i<4;i++)
{
number = number<<8;
number = number+ pMem1[i];
}
sign = (number & 0x80000000) ? -1 : 1;
exponent = ((number >> 23) & 0xff) - 127;
mantissa = 1 + ((float)(number & 0x7fffff) / 0x7fffff);
return sign * mantissa * pow(2, exponent);
}
int main(void)
{
float float_num ;
u8 pMem[] = {0x42,0xf5,0x05,0x1f};
float_num = Hex2Float(pMem);
}