///方法一
flat a;
unsigned char *p;
p=(unsigned char *)&a;
//写入:
for(int i=0;i<sizeof(float);i++)
eeprom_write_byte(addr+i,p);
//读:
for(int i=0;i<sizeof(float);i++)
*p++=eeprom_read_byte(addr+i);
///方法二
//来个简单点的。
float data0,data1;
u8 byte0,byte1,byte2,byte3;
data0=12345.1;
byte0=((u8 *)&data0)[0];//拆开
byte1=((u8 *)&data0)[1];
byte2=((u8 *)&data0)[2];
byte3=((u8 *)&data0)[3];
((u8 *)&data1)[0]=byte0;//合并
((u8 *)&data1)[1]=byte1;
((u8 *)&data1)[2]=byte2;
((u8 *)&data1)[3]=byte3;
///方法三
union
{
uint32 Temp_Cn;
uchar Cai[4];
}Ji_shu;
/方法四
#define uchar unsigned char
#define uint unsigned int
void ftoc(void)
{ float a;
uchar i,*px;
uchar x[4];
void *pf;
px=x;
pf=&a;
a=34.25;
for(i=0;i<4;i++)
*(px+i)=*((char *)pf+i);
for(i=0;i<4;i++)
printf("%x\n",x);
}
如果已将数存入eeprom,要将其取出合并,方法也是一样,可参考下面的程序。
void ctof(void)
{ float a;
uchar i,*px;
uchar x[4]={0xa0,0x1a,0xa,0x42};
void *pf;
px=x; //px指针指向数组x
pf=&a;
for(i=0;i<4;i++)
*((char *)pf+i)=*(px+i);
printf("%f\n",a);
}
uchar x[4]={0xa0,0x1a,0xa,0x42};
追加:方法1明显有错误,只是当时马上下班,我没仔细看。相信各位访客看看自己改改就好了,我就不做修改了