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; }#华为机试##应届生#
华为机试刷题实录 文章被收录于专栏
记录一下本科应届生(我自己)刷华为机试题的过程