十六进制转十进制(蓝桥杯)

思路

十六进制的数最多不会超过8位,则最大的数不会超过16的8次方,也就是2的32次方,恰巧处在int的边界范围,所以直接开long long 用C语言中的读入 读出函数就可以直接转换,当然还有当时自己受十六进制转换八进制的影响,写出了代码2

AC代码
#include<stdio.h>
int main()
{
    long long  x;
    scanf("%x",&x);
    printf("%lld",x);
    return 0;
 } 
Ac代码2
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

using namespace std;

string s,t;

long long n;

int main(){
	cin >> s;
	for(int i =0; i < s.length(); i++){
		switch(s[i])
		{
			case '0': t+="0000";break;
			case '1': t+="0001";break;
			case '2': t+="0010";break;
			case '3': t+="0011";break;
			case '4': t+="0100";break;
			case '5': t+="0101";break;
			case '6': t+="0110";break;
			case '7': t+="0111";break;
			case '8': t+="1000";break;
			case '9': t+="1001";break;
			case 'A': t+="1010";break;
			case 'B': t+="1011";break;
			case 'C': t+="1100";break;
			case 'D': t+="1101";break;
			case 'E': t+="1110";break;
			case 'F': t+="1111";break; 
		}
	}
	int x =t.length();
//	cout << t << endl; 
//	cout << x <<endl;
	for(int i = 0; i < t.length(); i++){
		n += (t[i] - '0') * pow(2,x - i - 1);//此处一定要记得将字符转换成数字
	}
	cout << n << endl;
	return 0;
} 

总结:
利用scanf读入时:
%d 读入十进制整数
%o 读入八进制整数
%x 读入十六进制整数
%p 读入指针


另外附一篇讲输入技巧的文章:
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值