浮點數在存儲時,是存儲連續的字節中的,隻要設法找到存儲位置,就可以得到這些數了。可以定義一個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);
}
}