首先说一下十六进制转换为十进制的方法
每一位数乘以十六的位数-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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!