题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
考察进制转换的问题,思路就是,处理好十六进制的每一位字符,最低位数字乘以16^0,次低位乘以16^1,...,以此类推,最后再求和,获得对应的十进制数字。
#include <string>
#include <cmath>
using namespace std;
int main() {
string s;
while (getline(cin, s, '\n')) {
int n = s.size();
int sum = 0;
for (int i = n - 1; i >= 2; i--) {
// 数字字符的转换 ASCII码 '0'->48 十六进制 0->0
if (s[i] >= '0' && s[i] <= '9') {
sum += (s[i] - 48) * pow(16, n - 1 - i);
}
// 字母字符的转换 ASCII码 'A'->65 十六进制 A->10
else if (s[i] >= 'A' && s[i] <= 'F') {
sum += (s[i] - 65 + 10) * pow(16, n - 1- i);
}
}
cout<< sum << endl;
}
return 0;
}