1281: 【基础】十六进制转二进制(1306)

内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:4 解决:3

题目描述

请将一个不超过100位的十六进制数转换为二进制数!

输入

一个不超过100位的十六进制整数

输出

该数对应的二进制数!

样例输入 复制

123456789ABCDEF

样例输出 复制

100100011010001010110011110001001101010111100110111101111

提示

#include<bits/stdc++.h>
using namespace std;
string t[16]=
{"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"
};
int main(){
	//s: 
    string s,r;
    cin>>s;
    //s="1A5"
    //s[i]转换为0~15之间的整数,然后再求对应的4位2进制 
    int x;
    for(int i=0;i<s.size();i++){
    	//如果是0~9 
    	if(isdigit(s[i])){
    		x=s[i]-'0';
		}else{
			x=s[i]-'A'+10;
		}
		r=r+t[x];
	}
	//删除前导0
	//000110101111
	//当r[0]是'0',则删除 
	while(r[0]=='0'){
		r.erase(0,1);
	}
	if(r==""){
		cout<<0;
	}else{
		cout<<r;
	}
	return 0;
}