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

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

每一位数乘以十六的位数-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

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/249651

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午3:51
下一篇 2023年2月14日 上午3:52

相关推荐