如何在程序中得到一個浮點數(shù)的組成數(shù)
發(fā)布時間:2008/6/5 0:00:00 訪問次數(shù):507
浮點數(shù)在存儲時,是存儲連續(xù)的字節(jié)中的,只要設法找到存儲位置,就可以得到這些數(shù)了?梢远x一個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ù)組,準備存儲浮點數(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) ;
}
}
浮點數(shù)在存儲時,是存儲連續(xù)的字節(jié)中的,只要設法找到存儲位置,就可以得到這些數(shù)了?梢远x一個void的指針,將此指針指向需要存儲的浮點數(shù),然后將此指針強制轉(zhuǎn)化為char型,這樣,利用指針就可以得到組成該浮點數(shù)的各個字節(jié)的值了。具體程序如下:
#define uchar unsigned char#define uint unsigned intvoid ftoc(void)
{ float a ;
uchar i,*
uchar x[4] ; /*定義字符數(shù)組,準備存儲浮點數(shù)的四個字節(jié)*、
void *pf ;
=x ; /*指針指向數(shù)組x*/
pf=&a ; /*void 型指針指向浮點數(shù)首地址*/
a=34.526 ;
for(i=0 ;i<4 ;i++)
{ *(+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,*
uchar x[4]={56,180,150,73} ;
void *pf ;
=x ;
pf=&a ;
for(i=0 ;i<4 ;i++)
{ *((char *)pf+i)=*(+i) ;
}
}