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;
}

#华为机试##应届生#
华为机试刷题实录 文章被收录于专栏

记录一下本科应届生(我自己)刷华为机试题的过程

全部评论

相关推荐

秋盈丶:后续:我在宿舍群里和大学同学分享了这事儿,我好兄弟气不过把他挂到某脉上了,10w+阅读量几百条评论,直接干成精品贴子,爽
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务