筆者在編制應用程序時有這樣的要求:將運算的結果(浮點數)存入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{ *(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{ *((char *)pf+i)=*(px+i) ; } } |