小白在这里学习了很多东西,该贡献的时候了,发一份IEEE754单精度浮点数转十进制数的源码

2019-07-20 04:57发布

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "string.h"

/*-----采用IEEE754方式将四字节浮点数转十进制数。
经过测试,以下四种方法可用,测试单片机型号:stm32f401----*/


/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat(u8* str)  
{  
    float data;
    data = *((float*)str);
    return data;
}

/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat1(u8* byteArray)  
{  
    return *((float*)byteArray);  
}
/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat2(u8 *a)
{
float tempf=0.0;
memcpy(&tempf,a,4);
return tempf;
}

/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat3(u8 *byteArray)
{
float f;
u8 *p = (u8*)&f;

p[0]=byteArray[0];

p[1]=byteArray[1];

p[2]=byteArray[2];

p[3]=byteArray[3];
return f;
}



int main(void)
{
// u8 i;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                                                //设置系统中断优先级分组2
        delay_init(168);                                                                                                                                //延时初始化
        uart_init(9600);                                                                                                                                //串口初始化波特率为115200

        while(1)
        {
                float f;
                u8 test[4] = {0x00, 0x85, 0xdc, 0x3d};                                                                                  //输入的数据,高字节到低字节排列
//        f=ByteToFloat(test) ;                                                                                                                        //方法1
        f=ByteToFloat1(test);                                                                                                                        //方法2
//        f=ByteToFloat2(test);                                                                                                                        //方法3
//        f=ByteToFloat3(test);                                                                                                                        //方法4
                printf(" %f ",f);
                delay_ms(1000);
               
               
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。