浮點數(shù)在存儲時,是存儲連續(xù)的字節(jié)中的,只要設(shè)法找到存儲位置,就可以得到這些數(shù)了。可以定義一個void 的指針,將此指針指向需要存儲的浮點數(shù),然后將此指針強制轉(zhuǎn)化為 char 型,這樣,利用指針就可以得到組成該浮點數(shù)的各個字節(jié)的值了。具體程序如下:
#define uchar unsigned char
#define uint unsigned intvoid FtoC(void)
{ float a;
uchar i,*px
uchar x[4]; /*定義字符數(shù)組,準(zhǔn)備存儲浮點數(shù)的四個字節(jié)*、
void *pf;
px=x; /*px指針指向數(shù)組 x*/
pf=&a; /*void 型指針指向浮點數(shù)首地址*/
a=34.526;
for(i=0;i<4;i++)
{ *(px+i)=*((char *)pf+i); /*強制void 型指針轉(zhuǎn)成 char 型,因為*/
} /*void 型指針不能運算*/
}
如果已將數(shù)存入 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);
}
}