| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1580 人关注过本帖
标题:[讨论]请问有谁知道(编程的)8进制转换为10进制的原理
只看楼主 加入收藏
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
 问题点数:0 回复次数:14 
[讨论]请问有谁知道(编程的)8进制转换为10进制的原理

我已经有了这个的程序,但对里面的算法不清楚,Who can help me?

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); }

搜索更多相关主题的帖子: 进制 原理 int main 
2005-01-10 15:39
workhard
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2004-11-17
收藏
得分:0 
他是从高位开始计算的,循环中首先得出高位的数字,如果他不是最低位,下一次将他乘以8 ,然后再加上下一位的数字,以此类推。比如输入112;开始n=0,计算n=1;第二次循环n=1*8+1;n=9;第三次,n=9*8+2,n=74;

2005-01-10 16:02
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
Thank you!
2005-01-10 17:46
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
哪位高手有更好或更明了的设计方案,请告之,Thank you!
2005-01-19 10:30
aczhe
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-12-23
收藏
得分:0 
#include"stdio.h"
main()
{ char s[6];
 int n,i;
 gets(s);
 for(i=0,n=0;s[i]!='\0';i++)
          n=n*8+s[i]-'0';
 printf("%d",n);
 getch();
 }

君子敬其在己者,而不慕其在天者,是已日进也。
2005-01-19 21:25
myy_yoyo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-2-24
收藏
得分:0 
还是看不明白!
我是菜菜!

2005-02-24 17:01
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
你现在只能可惜你是女孩

淘宝杜琨
2005-02-24 17:53
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
以下是引用aczhe在2005-1-19 21:25:40的发言: #include"stdio.h" main() { char s[6]; int n,i; gets(s); for(i=0,n=0;s[i]!='\0';i++) n=n*8+s[i]-'0'; printf("%d",n); getch(); }
在循环之前加入语句判断出字符串的长度后,然后再以这个长度为循环的终值这样循环速度更快,当然如果字符串更长的话,可以把循环变量申明成寄存器变量以加快速度

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2005-02-24 18:51
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
[QUOTE]n=n*8+*p-'0';[/QUOTE]
 对这句中的-'0'作用不明白,好像它是没有用的,但没了它,却就不能得到正确的答案来。谁能帮我解释,谢谢!是否与字符类型有关,因为这一句:char *p;
2005-03-01 16:19
lmr
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2004-12-9
收藏
得分:0 
对不起,也许我明白了,我的理解是:(*p-'0')才相当把字符型的转换为整型数的大小了。
2005-03-01 16:26
快速回复:[讨论]请问有谁知道(编程的)8进制转换为10进制的原理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012199 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved