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理解不了,,,求助啊!!!!
展开
2个回答
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语言不支持此类写法)})
展开全部
从高位到低位,逐位循环逐位撸……
举个例子,你输入一个字符串"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。
接下来指针向后移一位,指向字符串结束符,退出循环体。
举个例子,你输入一个字符串"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。
接下来指针向后移一位,指向字符串结束符,退出循环体。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询