Kiven5197

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

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

 

分类:

技术点:

相关文章: