SDNU 1431.十六进制转十进制

Description

问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535
#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stack>

using namespace std;
#define ll long long

char a[20];
ll s[20], sum, x;
int main()
{
    sum = 0;
    x = 1;
    memset(a, 0, sizeof(a));
    while(cin >> a)
    {
        sum = 0;
        x = 1;
        for(int i = strlen(a)-1; i >= 0; i--)
        {
            if(a[i] >= 'A' && a[i] <= 'Z')sum += (ll)((a[i]-'A')+10)*x;
            else if(a[i] >= '0' && a[i] <= '9')sum += (ll)(a[i]-'0')*x;
            x *= 16;
        }
        printf("%lld\n", sum);
        memset(a, 0, sizeof(a));
    }
    return 0;
}

 

posted @ 2019-02-15 13:39  明霞  阅读(244)  评论(0)    收藏  举报