关于八进制转化为十进制
main(){ char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='\0')
{n=n*8+*p-'0';
p++;}
printf("%d",n);
}
这个程序要怎样理解?请大虾指引。。谢了。。
对于一个任意进制数都是按权展开再相加成为一个十进制数.
以八进制为例
A(n-1)A(n-2)...A2A1A0
那化成十进制
A0+8*(A1+8*(A2+8*(...+8*(A(n-2)+8*A(n-1))))
所以在程序实现的时候就是
while(*(p)!='\0')//字符串接收数据,对应的p[0]为最高位
{n=n*8+*p-'0'; //*p-'0'是将数字字符转换为数.
p++; //地址下移,处理下一位.
}
/*不过程序能转换的数比较小*/