返回列表 发帖

如何在程序中得到一个浮点数的组成数

如在编制应用程序时有这样的要求:将运算的结果(浮点数)存入EEPROM中。我们知道,浮点数在C语言中是以IEEE格式存储的,一个浮点数占用四个字节,例如浮点数34.526存为(160,26,10,66)这四个数。要将一个浮点数存入EEPROM,实际上就是要存这四个数。那么如何在程序中得到一个浮点数的组成数呢?
 
   浮点数在存储时,是存储连续的字节中的,只要设法找到存储位置,就可以得到这些数了。可以定义一个void的指针,将此指针指向需要存储的浮点数,然后将此指针强制转化为char型,这样,利用指针就可以得到组成该浮点数的各个字节的值了。具体程序如下:

  1. #define uchar unsigned char#define uint unsigned intvoid FtoC(void)

  2. { float a;

  3. uchar i,*px

  4. uchar x[4]; /*定义字符数组,准备存储浮点数的四个字节*、

  5. void *pf;

  6. px=x; /*px指针指向数组x*/

  7. pf=&a; /*void 型指针指向浮点数首地址*/

  8. a=34.526;

  9. for(i=0;i<4;i++)

  10. { *(px+i)=*((char *)pf+i); /*强制void 型指针转成char型,因为*/

  11. } /*void型指针不能运算*/

  12. }

  13. 如果已将数存入EEPROM,要将其取出合并,方法也是一样,可参考下面的程序。

  14. #define uchar unsigned char#define uint unsigned int

  15. void CtoF(void)

  16. { float a;

  17. uchar i,*px

  18. uchar x[4]={56,180,150,73};

  19. void *pf;

  20. px=x;

  21. pf=&a;

  22. for(i=0;i<4;i++)

  23. { *((char *)pf+i)=*(px+i);

  24. }

  25. }
复制代码

返回列表

最新关注 关闭


关于论坛注册,最新修改,请网友们注意

由于最近大量垃圾信息出现在我们的论坛,为了营造一个良好的氛围,目前论坛只开发邀请注册,你可以点击以下链接自动邀请注册(如果有人使用了点击下一个试一试) ...


查看
珩源工控论坛热诚欢迎您联系我们进行合作!

Powered by Discuz! 7.2© 2001-2009 Comsenz Inc.

珩源工控论坛 ( 桂ICP备19004328号) |论坛统计|WAP| 客服中心-www.hymcu.com
  

GMT+8, 2024-11-1 12:24, Processed in 1.068250 second(s), 7 queries, Gzip enabled.