| 如何在程序中得到一个浮点数的组成数 |
| 类别:电子综合 |
|
笔者在编制应用程序时有这样的要求:将运算的结果(浮点数)存入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) ; } }
|
相关技术资料
- 海尔空调制冷故障维..
- 2008-1-25
- 大尺寸TFT显示器..
- 2008-1-27
- 利用DC/DC转换..
- 2008-1-27
- 电动车铅酸蓄电池的..
- 2008-1-27
- 大型搅拌站自动配料..
- 2008-1-27
- 城市和工业污水处理..
- 2008-1-27
- 开关电源的数字控制..
- 2008-1-27
- 精密的智能电池使充..
- 2008-1-27
- 基于DSP控制的2..
- 2008-1-27
- 增强型运营商级多服..
- 2008-1-27
- 高效CCD数码相机..
- 2008-1-27
- Atheros 单..
- 2008-1-27
- Philips 推..
- 2008-1-27
- Fujitsu 数..
- 2008-1-27
- 如何给PCI卡选用..
- 2008-1-27
- A/D转换芯片的测..
- 2008-1-27
- 基于CTl技术的交..
- 2008-1-27
- MMIC和RFIC..
- 2008-1-27
- 利用皮弹服务器进行..
- 2008-1-27
- 白色发光二极管及其..
- 2008-1-27



