蓝桥杯BASIC-11 基础练习 十六进制转十进制

问题描述

  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入

FFFF

样例输出

65535

思路:补了一下进制转换的知识,这篇博客很详细:打开链接

另外本题要注意范围开longlong,不然会爆

#include<cstdio>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
//const int N=10005;
//int a[N];
int main()
{
	char s[9];
	scanf("%s",s);
	ll summ=0;
	int len=strlen(s);
	for(int i=0;i<len;++i)
    {
        if(s[i] <='9' && s[i]>='0')
            summ+=(s[i]-'0')*pow(16,len-i-1);
        else
        {
            int a=s[i]-'A'+10;
            summ+=a*pow(16,len-i-1);
        }
    }
    printf("%lld\n",summ);
	return 0;
}

 

    原文作者:进制转换
    原文地址: https://blog.csdn.net/qq_41785863/article/details/84112325
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞