c++实现16进制转10进制

输入:
0xA
0xAA
输出:
10
170

注意点

  • sum long long 防止爆int
  • 字符是数字还是字母
    • isdigit
    • str[i] - 'A' + 10 后面加10
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>

using namespace std;

int main()
{
    string str;
    while(cin >> str)
    {
        long long sum = 0;
        for(int i = str.size() - 1, base = 1; i > 1; i --, base *= 16)
        {
            if(isdigit(str[i]))
               sum += (str[i] - '0') * base;
            else
                sum += (str[i] - 'A' + 10) * base;
        }
        
        cout << sum << endl;
    }
    
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容