问题:1294 - 二进制转十六进制
类型:进制转换
题目描述:
请将一个不超过 100 位的二进制数转换为十六进制数!
输入:
一个不超过 100 位的二进制整数。
输出:
该数对应的十六进制数。
样例:
输入:
cpp
11001001111011111000001000010011
输出:
cpp
C9EF8213
1.分析问题
- 已知:
- 未知:
- 关系:
2.定义变量
3.输入数据
4.数据计算
5.输出结果
完整代码如下:
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
//一、分析问题
//已知:一个不超过 100 位的二进制数;
//未知:转换为十六进制数输出;
//关系: 进制转换。
//二、定义变量(已知、未知、关系)
string s,r,d="0123456789ABCDEF";
int index;
//三、输入已知
cin>>s;
//四、根据关系计算
while(s.size()%4!=0){
s.insert(0,"0");
}
for(int i=0;i<s.size();i+=4){
index=(s[i]-'0')*8+(s[i+1]-'0')*4+(s[i+2]-'0')*2+(s[i+3]-'0');
r+=d[index];
}
//五、输出未知
cout<<r;
return 0;
}