十六进制与十进制之间的相互转换
首先说一下十六进制转换为十进制的方法
每一位数乘以十六的位数-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; }