题解 | #进制转换#

进制转换

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;
}
全部评论

相关推荐

nbdy:字太多了,写简历不是写自传,亮点难点技能点列出来就行,要简明扼要
点赞 评论 收藏
分享
01-23 19:12
门头沟学院 Java
榨出爱国基因:你还差 0.1% 就拿到校招礼盒,快叫朋友给你砍一刀吧
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务