搜索
bottom↓
回复: 12

提供一段我在网上找的: 浮点数不用sprintf转换成 ascii 的C代码

[复制链接]
头像被屏蔽

出0入0汤圆

发表于 2004-10-17 14:25:26 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2004-10-25 14:43:21 | 显示全部楼层
可以这样试试,不过是在KEILC51里运行的代码,用到ICC中可能需要修改。

三、将浮点数转化为字符数组



笔者在编制应用程序时有这样的要求:将运算的结果(浮点数)存入EEPROM中。我们知道,浮点数在C语言中是以IEEE格式存储的,一个浮点数占用四个字节,例如浮点数34.526存为(160,26,10,66)这四个数。要将一个浮点数存入EEPROM,实际上就是要存这四个数。那么如何在程序中得到一个浮点数的组成数呢?



浮点数在存储时,是存储连续的字节中的,只要设法找到存储位置,就可以得到这些数了。可以定义一个void的指针,将此指针指向需要存储的浮点数,然后将此指针强制转化为char型,这样,利用指针就可以得到组成该浮点数的各个字节的值了。具体程序如下:



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



{ float a;



uchar i,*px



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



void *pf;



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



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



a=34.526;



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



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



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



}



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



#define uchar unsigned char#define uint unsigned int



void CtoF(void)



{ float a;



uchar i,*px



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



void *pf;



px=x;



pf=&a;



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



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



}



}

出0入0汤圆

发表于 2004-12-9 16:22:45 | 显示全部楼层
我在前几天的帖子里也有一这样的文章,实现的方法我感觉比你的好一些,我的帖子是转自ICCAVR的新闻组,你可以去看看。

出0入0汤圆

发表于 2004-12-9 17:12:40 | 显示全部楼层
谢谢芒果派,你的帖子我已经收藏了,你的程序比上面可读性要好一些。


-----此内容被Jacky于2004-12-09,17:15:24编辑过

出0入0汤圆

发表于 2004-12-9 18:56:06 | 显示全部楼层
方法看过了,容易懂.

ICCAVR的新闻组?可以提供详细一点的地址吗?
-----此内容被wsmcjm于2004-12-09,18:57:45编辑过

出0入0汤圆

发表于 2009-4-1 09:36:02 | 显示全部楼层
mark。。。。。。。。。

出0入0汤圆

发表于 2009-4-1 09:40:51 | 显示全部楼层
网上类似的很多

出0入0汤圆

发表于 2009-4-1 09:47:44 | 显示全部楼层
armok 阿莫
  你什么时候也关心起技术了呢?

出0入0汤圆

发表于 2009-4-1 10:11:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-9 11:48:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-7 19:44:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-5-4 22:07:13 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2015-10-28 03:24:02 | 显示全部楼层
说明你还在写代码!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 08:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表