问题描述
- 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
时间: 2024-11-03 20:57:08