赞
踩
不需要每个字母都写一个函数也不需要进行复杂的转换,利用如下的方法通过ASCII进行转换即可
例:2AF5换算成10进制:
用竖式计算:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
#include <iostream> #include<cstdio> #include<cmath> using namespace std; int main() { string str; cin >> str; int count = 0; for (int i = 0; i < str.length(); i++) { if (str[i] >= 65 && str[i] <= 69) {//如果匹配到了A-E的对应的ASCII,则进入字母处理阶段 str[i]=str[i] - 17+10-'0';//数字0的ASCII是48,A-17对应到0,再+10变为A十六进制对应的十进制,-'0'将字符串转换为数字 } else { str[i]=str[i] - '0';//数字部分直接转换为int类型 } count += pow(16, str.length()-i-1)*str[i];//累加和,pow是求次方函数 } cout << count << endl; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。