浮点与整型按存储互转--浮点数据通信按位传输转换整型及其还原成浮点型方法

1190阅读 0评论2016-09-01 sinbingzoo
分类:嵌入式

错误的转换方法
ultemp1=MK_DWORD(pin->iSDO_PMPower_LowWord,pin->iSDO_PMPower_HighWord);
ftemp=(FLOAT32)ultemp1;
ultemp2=(UINT32)ftemp;
pout->iSDO_9216_PMPower=ultemp2;/*123.45kW--> 123kW*/
pPMshow->PMPower_W=ftemp*1000;


正确的转换方法:使用共用体,共用内存的方式
typedef union 
{
    UINT32 ulData;    
    FLOAT32 fData;
}FLOAT_UINT32_MEM_UNION;

FLOAT_UINT32_MEM_UNION temp_fin32;
temp_fin32.ulData=MK_DWORD(pin->iSDO_PMPower_LowWord,pin->iSDO_PMPower_HighWord);
pout->iSDO_9216_PMPower=temp_fin32.fData;/*123.45kW--> 123kW*/
pPMshow->PMPower_W=temp_fin32.fData*1000;


参考文章

小议大小端模式对C语言的共用体结构的影响
http://blog.csdn.net/ce123/article/details/7097026

 浮点型数据存储方式分析 
http://blog.chinaunix.net/uid-20937170-id-3396073.html
上一篇: UCOSII优先级反转及解决
下一篇:u-boot2016 ARMv8架构编译链接rela.dyn段理解