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

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

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

 

posted @ 2017-02-20 21:54  Kiven#5197  阅读(2232)  评论(0编辑  收藏  举报