1249: 【基础】二进制转十六进制(1294)
内存限制:16 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:5
解决:5
题目描述
请将一个不超过100位的二进制数转换为十六进制数!
输入
一个不超过100位的二进制整数
输出
该数对应的十六进制数!
样例输入 复制
11001001111011111000001000010011
样例输出 复制
C9EF8213
提示
#include<bits/stdc++.h> using namespace std; //将4位的2进制转换位1位的16进制 char num(string s) { //1101,从最低位开始按权展开,转换位10进制 //再转换为16进制的字符 int r=0,i,t=1; for(i=s.size()-1;i>=0;i--) { r=r+(s[i]-'0')*t; t=t*2; } char c; if(r<10) { c=r+'0'; }else{ c=r+'A'-10; } return c; } int main(){ string s,t; //存放二进制 cin>>s; //补0 if(s.size()%4==1){ s="000"+s; }else if(s.size()%4==2){ s="00"+s; }else if(s.size()%4==3){ s="0"+s; } //每4位一格,将4位的二进制转换为对应的16进制 for(int i=0;i<s.size();i=i+4){ t=s.substr(i,4); cout<<num(t); } return 0; }