题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

#include <iostream>
#include <string>
#include <math.h>

using namespace std;

int main() {
    string Hx16str;
    int Ostr = 0;
    int n = 0;
    while (cin >> Hx16str) { // 注意 while 处理多个 case
        Hx16str = Hx16str.substr(2,Hx16str.length()-2);

        for (int i = Hx16str.length() - 1; i >= 0; i--)
        {
            switch (Hx16str[i])
            {
                case 'A':
                    Ostr += 10*pow(16,n++);
                break;
                case 'B':
                    Ostr += 11*pow(16,n++);
                break;
                case 'C':
                    Ostr += 12*pow(16,n++);
                break;
                case 'D':
                    Ostr += 13*pow(16,n++);
                break;
                case 'E':
                    Ostr += 14*pow(16,n++);
                break;
                case 'F':
                    Ostr += 15*pow(16,n++);
                break;
                default:
                    Ostr += (Hx16str[i] - 48)*pow(16,n++);
                break;
            }
        }
        cout << Ostr << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务