c语言:如何把一个整数按位保存在一个字符数组里,然后再读取出来还原为一个整数

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