对输入的字符进行十六进制转十进制处理
时间: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。必须用
#gcc htoi.c -lm -o htoi
2.计算方法弄清楚之后,对于逻辑顺序问题,必须要写写画画。单凭脑子思考,很容易混乱。
3.程序里的变量名字太过简单,大程序要注意要严谨。还有省略了防御代码,对非法的输入格式没有任何防御。
4.猪脑,用了那么多t,u,v不如用容易理解的数组名……
字符十六进制十进 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)