加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

IEEE754   标准数据格式 与 十进制 之间转换的简单方法 附C程序

(2015-05-27 15:38:34)
标签:

c语言

嵌入式

分类: 学习交流

1 IEEE754标准数据格式这里就不具体罗列了,有关转换例子可参考下面连接:

http://blog.chinaunix.net/uid-24118190-id-75212.html

2 在实际应用中,如果按照IEEE754计算规则去编写C程序实现IEEE754与十进制之间的转换会有些麻烦,其实在C语言中浮点数本身就是采用IEEE格式来存储的,可巧妙利用union数据类型实现两者之间的转换,方法如下:

2.1 定义union数据

typedef union                                        

{
   float ul_Temp;
   uint8  uc_Buf[4];
}un_DtformConver;

 

2.2 应用

un_DtformConver   DtformConver;

uint8 i;

int32 il_Temp32;

float f_Temp;

//十进制float型数据转换成IEEE754标准

DtformConver.ul_Temp = 220.1;         
il_Temp32=0;
 for(i=0;i<4;i++)
 {
    il_Temp32  |= (int32)(DtformConver.uc_Buf[i]<<(i*8));
 }

 

//IEEE754标准转换成十进制float

il_Temp32 = 0x435C0000;        //实际十进制值是220

 memset((uint8 *)&DtformConver.uc_Buf[0],0,4);
  for(i=0;i<4;i++)
 {
    DtformConver.uc_Buf[i] = (uint8)(il_Temp32>>(i*8));
 }
 f_Temp = DtformConver.ul_Temp;

 

以上是我从程序里copy出来的,已经验证过~

http://www/uc/myshow/blog/misc/gif/E___6789EN00SIGG.gif  标准数据格式 与 十进制 之间转换的简单方法 附C程序" TITLE="IEEE754   标准数据格式 与 十进制 之间转换的简单方法 附C程序" />从此再也不用惧怕这种数据转换了。。。。。。

在此要非常感谢:http://www.dzsc.com/data/html/2011-10-13/98858.html 原文作者,大大减轻了我的工作负担~赞一个http://www/uc/myshow/blog/misc/gif/E___6743EN00SIGG.gif  标准数据格式 与 十进制 之间转换的简单方法 附C程序" TITLE="IEEE754   标准数据格式 与 十进制 之间转换的简单方法 附C程序" />

 

另外多说一句,在一般数据通信过程中,习惯用BCD格式的,实质上基于上面加个BIN与BCD之间的相互转换就可以了~

 


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有