HJ5 题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
#include<iostream>
#include<string>
using namespace std;
//将十六进制字符转为十进制数字
int hexToDecimal(const string& str, int len) {
int dec = 0; //十进制数字
int base = 1; //十六进制数的位权,第一位1,第二位16,第三位,16的平方...
char c; //用来接收字符串中的字符
for (int i = len - 1; i >= 0; i--) {
c = str[i];
if (c >= '0' && c <= '9') {
dec += (c - '0') * base; //字符转数字再乘位权;
} else if (c >= 'A' && c <= 'F') {
dec += (c - 'A' + 10) * base;
} else if (c >= 'a' && c <= 'f') {
dec += (c - 'A' + 10) * base;
}
base = base * 16; //下一位位权是上一位的16倍;
}
return dec;
}
int main() {
string str;
cin >> str;
int len = str.length();
int num;
str = str.substr(2, len - 2); //截取Ox后的十六进制数值部分
num = hexToDecimal(str, len - 2); //转为十进制数字
cout << to_string(num) << endl;
return 0;
}
#华为机试##应届生#华为机试刷题实录 文章被收录于专栏
记录一下本科应届生(我自己)刷华为机试题的过程
