void WitedataToFlash(void)
{
unsigned char i;
sprintf(datal, "%luunsignedlong", gdvolt);
for(i=0;i<11;i++)
EEPROM_write(0x01+i,datal[i]);
}
/*************************************************************************
* 名称: readdataToFlash()
* 功能: eeprom里独读出数据
* 参数: 无
* 返回: 无
*************************************************************************/
void readdataToFlash(void)
{
unsigned char i;
unsigned char j;
for(i=0;i<11;i++)
{
datal[i]=EEPROM_read(0x01+i);
}
for(j=0;j<11;j++)
sum_volt+=(datal[j]-0x30)*(10^j);
}
单片机程序,gvolt为长整型,我想把它保存在字符数组datal[i]中,
后面读的程序里,用 sum_volt+=(datal[j]-0x30)*(10^j); 这样行得通吗
datal[i]为定义的数组啊,定义为全局变量了
参考Converting Integer to Character and Vice Versa
不知道你用的是哪个单片机,
sprintf(datal, "%luunsignedlong", gdvolt);
是不是等同于 一般意义上的
sprintf(datal, "%011d", 100);
如果是的话可以啊,
但不是的话,你得处理不够长的时候
for(j=0;j<11 && data[j] !=0 ;j++)
sum_volt+=(datal[j]-0x30)*(10^j);
读写 EEPROM 看你自己的单片机吧,方案是可行的
不懂单片机但是可以说下思路。
先判断整数位数,然后用求余和整除分别拿到各位上的数字,然后分别+‘0’存入数组相应的位置。
拿出来的时候也是先判断数组位数,然后分别由char型转换成int型(参考atoi())再拼成原来的整数。
参考代码段
https://github.com/707wk/Senior-middle-school/blob/master/Filling%20in%20the%20gaps.c