| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 18844 人关注过本帖
标题:八进制转换为十进制
只看楼主 加入收藏
dayingyushi
Rank: 2
等 级:论坛游民
帖 子:23
专家分:14
注 册:2010-2-10
结帖率:75%
收藏
已结贴  问题点数:12 回复次数:10 
八进制转换为十进制
有一个将八进制字符串转换为与其数值相等的十进制整数的函数,规定输入的字符串最多只能包含5位八进制数
先定义了  char str[6]
有函数:
int fun(char*s)
{int n;
 n=*s-'0';
 s++;
 while(*s!='\0')
 {n=n*8+*s-'0';
  s++;
 }
 return n;
}
将str作为实参,使用函数fun(str)
我不明白红色语句部分,请高手帮忙,谢谢
搜索更多相关主题的帖子: 十进制 八进制 
2010-03-05 19:10
邶风
Rank: 5Rank: 5
等 级:职业侠客
帖 子:287
专家分:335
注 册:2009-1-20
收藏
得分:4 
while(*s!='\0')
{n=n*8+*s-'0';
  s++;
}

比如(125)8 = 1*8^2 + 2*8^1 + 5*8^0
一次循环出来
 n*8 就是实现那个乘方
*s-'0'就是得到算式里面的1、2、5(‘1’-‘0’=1 ‘5’-‘0’=5)

#include
2010-03-05 19:32
邮贼
Rank: 2
等 级:论坛游民
帖 子:17
专家分:36
注 册:2010-3-5
收藏
得分:0 
这个就是八进制转化为十进制需要的公式啊。。。。
2010-03-05 19:51
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:4 
int fun(char*s)
{int n;
n=*s-'0';
s++;
while(*s!='\0')
{n=n*8+*s-'0';
  s++;
}
return n;
}
--------

例:  假如输入  八进制 A2       则str[0] = 'A'  str[1] ='2'   str[2] = '\0';
n= *s-'0'         这里的n 用来计算累加值   *s初值是 'A'    *s-'0'的作用是把 字符转换成  整形数据   即 n = 10;

s++    此时   *s='2'

while
(...)     n=n*8+*s-'0'     <==>等价 n=80+2     n=82



或者写成  n = (n << 3) | (*s-'0');   效率更高点!~


[ 本帖最后由 hanzhenddd 于 2010-3-5 20:28 编辑 ]
2010-03-05 20:12
韦春敢
Rank: 3Rank: 3
来 自:广西
等 级:论坛游侠
帖 子:91
专家分:142
注 册:2010-1-25
收藏
得分:4 
int fun(char*s)
{int n;
n=*s-'0';//这里是将S[0]里的字符转化为十进数并赋予n.
s++;//将指针向下给字符移动。
while(*s!='\0')//判断字符串是否结束!
{n=n*8+*s-'0';//与n=*s-'0'基本相同的思想。将当前指针指的字符转化正十进数(*s-'0'),然后加上原来的n*8。正如十进数中的个位变十位剩10一样。
  s++;//将指针向下给字符移动。记得s[0]里的字符是最高位。。如65765。s[0]=6。
}
return n;
}
//真罗嗦!!

哈哈
2010-03-05 21:32
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:0 
回复 5楼 韦春敢
这位同学貌似我每次回帖你都会被你罗唆一句。。

你说我罗唆 那你数数解释的汉字谁的多谁的少好么?

要谦虚一点啊,到处乱转真觉得自己跟大爷似的。。有种你发个 linux 驱动开发的教程看看!!~
2010-03-06 16:36
韦春敢
Rank: 3Rank: 3
来 自:广西
等 级:论坛游侠
帖 子:91
专家分:142
注 册:2010-1-25
收藏
得分:0 
我无聊罢了。。没有什么本事的!!

哈哈
2010-03-08 13:52
韦春敢
Rank: 3Rank: 3
来 自:广西
等 级:论坛游侠
帖 子:91
专家分:142
注 册:2010-1-25
收藏
得分:0 
我本人不要什么谦虚的,我就是想在论坛来帮帮有问题的人,来充实自己的生活。假如有人觉得我是个大爷或假大爷,要把我从这里踢走。那我也没有办法。。

哈哈
2010-03-08 13:58
uyhero
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-3-9
收藏
得分:0 
以和为贵
2010-03-09 11:30
f26842684
Rank: 2
等 级:论坛游民
帖 子:19
专家分:47
注 册:2010-3-8
收藏
得分:0 
其实我是蹭分的...^_^
2010-03-09 12:29
快速回复:八进制转换为十进制
数据加载中...
 
   



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

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