八进制转十进制算法,求解释~~为什么是这样~~~

intfun(char*p){intn;/*********found********/n=*p-'0';p++;while(*p!=0){/*********found... int fun(char *p)
{
int n;
/*********found********/
n=*p-'0';
p++;
while(*p!=0)
{
/*********found********/
n=n*8+*p-'0';
p++;
}
return n;
}
展开
 我来答
一剑出血
高粉答主

2012-03-10 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.8亿
展开全部
原始输入为形如"34567"这样的八进制字符串。
输出为转换后的整形十进制数。
计算方法就是从最高位(首字节)开始,先将ASCII字符转换为对应整数,而后逐位乘8并依次累加下来得到最终结果。
以上面的34567为例,执行本函数就相当于是在:
(((3*8+4)*8+5)*8+6)*8+7 = 14711
追问
表示非常感谢~~~我还想问下那个5,6行是什么意思~~
追答
n=*p-'0';
首先取出最高位。

p++;
指针移动指向字符串中的下一个字符。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式