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

本文介绍了一种使用C++实现从二进制数转换为十六进制数的方法。通过定义一个字符串到十六进制字符的映射函数btox,将输入的长整型二进制数转换为字符串形式,然后每四位二进制数转换为一位十六进制数。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 string  btox(string b){
 5     if(b=="0000") return "0";
 6     if(b=="0001") return "1";
 7     if(b=="0010") return "2";
 8     if(b=="0011") return "3";
 9     if(b=="0100") return "4";
10     if(b=="0101") return "5";
11     if(b=="0110") return "6";
12     if(b=="0111") return "7";
13     if(b=="1000") return "8";
14     if(b=="1001") return "9";
15     if(b=="1010") return "A";
16     if(b=="1011") return "B";
17     if(b=="1100") return "C";
18     if(b=="1101") return "D";
19     if(b=="1110") return "E";
20     if(b=="1111") return "F";
21 }
22 
23 int main() {
24     long long n;
25     cin>>n;
26     if(n==0){
27         cout<<0<<endl;
28         return 0;
29     }
30     string a="";
31     
32     while(n){
33         a+=('0'+n%2);
34         n/=2;
35     }
36     reverse(a.begin(), a.end());
37     
38     if(a.length()%4==1){
39         a = "000"+a;
40     }else if(a.length()%4==2){
41         a = "00" + a;
42     }else if(a.length()%4==3){
43         a = "0" + a;
44     }
45     string s="";
46     for(int i=0; i<a.length(); i+=4){
47         s+=btox(a.substr(i,4));
48     }
49     cout<<s<<endl;
50     
51     
52 }

 

转载于:https://www.cnblogs.com/zhishoumuguinian/p/9993316.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值