十六进制与十进制之间的相互转换

本文介绍了十六进制到十进制及反之的转换方法,并提供了具体的C++实现代码。通过位权求和的方式将十六进制转换为十进制数;采用除基取余法将十进制数转换为十六进制形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一下十六进制转换为十进制的方法 

每一位数乘以十六的位数-1次方和即为十进制,即:

sum+=第几位*pow(16,位数-1-第几位);

 

实行代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main(){
 5     string str;
 6     cin>>str;
 7     int len=str.size();
 8     long long sum=0;
 9     for(int i=0;i<len;i++){
10         if(str[i]=='1'){
11             sum+=1*pow(16,len-1-i);
12             continue;
13         }
14         if(str[i]=='0'){
15             sum+=0*pow(16,len-1-i);
16             continue;
17         }
18         if(str[i]=='2'){
19             sum+=2*pow(16,len-1-i);
20             continue;
21         }
22         if(str[i]=='3'){
23             sum+=3*pow(16,len-1-i);
24             continue;
25         }
26         if(str[i]=='4'){
27             sum+=4*pow(16,len-1-i);
28             continue;
29         }
30         if(str[i]=='5'){
31             sum+=5*pow(16,len-1-i);
32             continue;
33         }
34         if(str[i]=='6'){
35             sum+=6*pow(16,len-1-i);
36             continue;
37         }
38         if(str[i]=='7'){
39             sum+=7*pow(16,len-1-i);
40             continue;
41         }
42         if(str[i]=='8'){
43             sum+=8*pow(16,len-1-i);
44             continue;
45         }
46         if(str[i]=='9'){
47             sum+=9*pow(16,len-1-i);
48             continue;
49         }
50         if(str[i]=='A'){
51             sum+=10*pow(16,len-1-i);
52             continue;
53         }
54         if(str[i]=='B'){
55             sum+=11*pow(16,len-1-i);
56             continue;
57         }
58         if(str[i]=='C'){
59             sum+=12*pow(16,len-1-i);
60             continue;
61         }
62         if(str[i]=='D'){
63             sum+=13*pow(16,len-1-i);
64             continue;
65         }
66         if(str[i]=='E'){
67             sum+=14*pow(16,len-1-i);
68             continue;
69         }
70         if(str[i]=='F'){
71             sum+=15*pow(16,len-1-i);
72             continue;
73         }
74     }
75     cout<<sum<<endl;
76     return 0;
77 } 

 

十进制转换为十六进制

由于十六进制的表示方法包含字符,我们可借用一个字符数组ch[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}

每当十进制数对16取余时即可对应其中的字符来找到十六进制的表示方法。

 

实行代码:

#include<bits/stdc++.h>
using namespace std;

int main(){
    char ch[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    long long n;
    stack<char> s;
    cin>>n;
    while(n>=16){//注意等于时也要取模,即留零进一 
        s.push(ch[n%16]);
        n/=16;
    }
    s.push(ch[n]);
    while(!s.empty()){
        cout<<s.top();
        s.pop();
    }
    cout<<endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/Kiven5197/p/6421747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值