C语言8进制转10进制?

没看懂这个如何能实现8进制转10的不应该是8^n*(*p)+.....他这个n最初附了最低位的值了,后面n=n*8+*p-0理解不了,,,求助啊!!!!... 没看懂这个如何能实现8进制转10的不应该是8^n*(*p)+.....他这个n最初附了最低位的值了,后面n=n*8+*p-0理解不了,,,求助啊!!!! 展开
 我来答
匿名用户
2022-05-27
展开全部

8^n*(*p)+.....那个是异或操作

*p-'0'   即为p所指当前字符数字的数字值,将其赋给i,使计数器数组a[]中对应的元素自加一。

n=n*8+*p-'0' 就是假设输入的八进制值为'123',

首先*p-'0'拿出1的值,暂时看成一位八进制,所以是1,

第二次*p-'0'拿出2的值,暂时看成二位八进制,1的阶位上加一位(1*8+2),

第三次*p-'0'拿出2的值,暂时看成三位八进制,1和2的阶位上各加一位(1*8+2)*8+3,也就是1*8*8+2*8+3

 ...之后(以此类推)

指针遇到'\0',结束循环

(ps:如果你想写出8的n次方*(*p)的形式,应调用math库中的pow(8,n)8的n次方,还需要两个指针确定n的大小,一个指向首地址,一个指向末地址,首地址自增,末地址不动

{8^n*(*p)(以及**的表达形式)应该是python等语言,C语言不支持此类写法)})

一剑出血
高粉答主

2022-05-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
从高位到低位,逐位循环逐位撸……
举个例子,你输入一个字符串"321",并且作为参数传进了这个函数。

刚开始指针指向的是字符'3',首先我们要将ASCII码转为数值,用'3'减去'0'得到3这个数值。

接下来指针向后移一位,指向字符'2'。同样提取得到了2这个数值。由于之前的3要高一阶,所以3×8 = 24,再加上当前阶的2,24+2=26。
接下来指针向后移一位,指向字符'1'。提取得到1这个数值。由于之前的26要高一阶,所以26×8 = 208,再加上当前阶的1,208+1=209。
接下来指针向后移一位,指向字符串结束符,退出循环体。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式