因为个人水平原因,本人遇到了一些C语言编程方面的问题,现在向各位C语言强人请教,敬请赐教!谢谢!
就像把十六进制数转换为十进制数一样(其转换的公式:(a) 当s[i]在‘0’到‘9’之间时,n=n*16+s[i]-‘0’;(b)当s[i]在‘A’到‘F’之间时,n=n*16+s[i]-'A'+10 (其中n=0,n为十六进制数转化为十进制数后的数值),s[i]表示每一位字符),类似的,我想请教各位C语言强人,把二进制数转换为十进制数以及把八进制数转换为十进制数的表达式应该怎么写?(我是C语言初学者,麻烦各位看到此提问的C语言强人讲的详细一点!不胜感激!我的积分只剩下10分了,悬赏分不多,敬请见谅!)
根据我所了解的,'0'好像是ACSII码.下面是我向高手请教的结果.n=n*16+s[i]-'0';// (当s[i]中有数字(0—9)时,在计算n时为什么要在最后加上一个“—‘0’”?)因为s[i]是字符ascii码,'0' 的ascii码是48.1是49,类推,所以ascii减一下就是他实际 数字大小。实现了字符转等值数字的运算。
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10; //(当s[i]中有A,B,C,D,E,F时,为什么不直接把 n=n*16+s[i]-'A'+10写成n=n*16+s[i]?(也就是说为什么要在最后添一个“—‘A’+10?))这里和上面一样,也是算ascii,实现字符转数字 ,你可以去查ascii码表.希望有C语言高手帮我解决这个问题.谢谢!