试题 基础练习 十六进制转十进制

试题 基础练习 十六进制转十进制

问题描述
  从键盘输入一个不超过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类型定义变量来确保数据不会益处。


本文到此结束,接下来分享一张好看的图片
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬泉旅人Winspr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值