试题 基础练习 十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
代码如下
#include<iostream>
#include<cmath>
using namespace std;
long long SixteentoTen(string n){
long long sum = 0;
int i = 0;
for(;i<n.size();i++){
switch(n[i]){
case 'A':sum+=10*pow(16,n.size()-1-i);break;
case 'B':sum+=11*pow(16,n.size()-1-i);break;
case 'C':sum+=12*pow(16,n.size()-1-i);break;
case 'D':sum+=13*pow(16,n.size()-1-i);break;
case 'E':sum+=14*pow(16,n.size()-1-i);break;
case 'F':sum+=15*pow(16,n.size()-1-i);break;
default:sum+=((int)n[i]-48)*pow(16,n.size()-1-i);
}
}
return sum;
}
int main()
{
string n;
cin>>n;
long long result;
result=SixteentoTen(n);
cout<<result<<endl;
return 0;
}
测试截图
PS:由于题目要求8位16进制数,所以用long long类型定义变量来确保数据不会益处。
本文到此结束,接下来分享一张好看的图片