十六进制转十进制(蓝桥杯基础题)

基础练习 十六进制转十进制  
时间限制:1.0s   内存限制:512.0MB    





问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 思路:将十六进制按位展开 需要注意的地方:区分sizeof()与s,size()的不同;pow()函数的重载问题,注意参数类型;表示目的十进制数的变量类型的选择,要考虑到数据的溢出,这里我选择了long long类型。(我自己的学习小总结,题很简单,但自己有很多不足,但也希望帮助到刚刚入门的同学)

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main(){
string s;
long long sum=0;
cin>>s;

int t=0;//int为每一位十六进制对应的十进制数,即按位展开的基数
for(int i=s.size()-1;i>=0;i--){//这里要区分sizeof(s)与s.size()的区别
	if(s[i]>='A'&&s[i]<='F')
		t=s[i]-55;
	if(s[i]>='0'&&s[i]<='9')
		t=s[i]-'0';
	  sum+=t * pow(16,(float)(s.size()-i-1));//这里曾有pow函数的重载问题,整理其用法
}
cout<<(long long)sum<<endl;
return 0;
}

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