您的位置 首页 开关

对输入的字符进行十六进制转十进制处理

若是程序里的变量,直接用printf就可以对进制进行转换(%d%x%o等)。假如是对输入的字符进行进制转换,则要复杂一点。想实现的目的是:

若是程序里的变量,直接用printf就可以对进制进行转化(%d %x %o等)。假如是对输入的字符进行进制转化,则要杂乱一点。

想完成的意图是:对多个(理论对字符数设的上限是1000)输入的0(零)x或0X最初的十六进制转化为十进制输出。
我是分红以下几个过程:
1.对行输入用数组s进行保存。(对这种输入处理,现已开端习气先保存再处理的方法)
2.辨认0x和0X标识。
3.以标识作为开端标志,空格作为完毕标志,独自提取、核算、保存每一个输入位,转为十进制存入数组u。
4.为了便利核算,把u逆次序保存为数组v(由于进制运算低位在右,可是数组次序相反)。
5.依照(16^0)*n + (16^1)*m……的算法求出一组输入的十进制值(m、n为单个十六进制数转化成的十进制数),余下组以循环求得。
字符转十进制整数根据ASCII码(American Standard Code for Information Interchange全称便利回忆):

程序



履行(为了显现数组次序,最终一组不行长截图):
总结:
1.C里边没有^这个运算符(实际上这是“位与”的位运算),不能直接写16^l。有必要用里边的double pow(double x, double y);来求x的y次方,但一起,编译需求参加-lm选项:
#gcc htoi.c -lm -o htoi (次序不能乱)
2.核算方法弄清楚之后,关于逻辑次序问题,有必要要写写画画。单凭脑子考虑,很简略紊乱。
3.程序里的变量姓名过分简略,大程序要注意要谨慎。还有省掉了防护代码,对不合法的输入格局没有任何防护。
4.猪脑,用了那么多t,u,v不如用简略了解的数组名……

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/256757.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部