新闻中心

EEPW首页>嵌入式系统>设计应用> 对输入的字符进行十六进制转十进制处理

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

作者: 时间:2016-11-28 来源:网络 收藏
若是程序里的变量,直接用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不如用容易理解的数组名……


评论


技术专区

关闭