十六进制转化为十进制
#include<stdio.h> #include<math.h> #include<string> #include<iostream> using namespace std; int main() { string s; cin>>s; int m=s.size(); long long sum=0; for(int i=0;i<s.size();i++) { switch(s[i]) { case 'F': sum+=15*pow(16,--m);break; case 'E': sum+=14*pow(16,--m);break; case 'D': sum+=13*pow(16,--m);break; case 'C': sum+=12*pow(16,--m);break; case 'B': sum+=11*pow(16,--m);break; case 'A': sum+=10*pow(16,--m);break; default: sum+=(s[i]-'0')*pow(16,--m);break; } } cout<<sum; return 0; }
十六进制转化为八进制
#include <iostream> #include <string> using namespace std; int arr[10000005]; int main() { int len,i,j; string str,str2; cin>>str; len=str.length(); str2=""; // 十六进制转换为二进制 for(i=0;i<len;++i) { switch(str[i]) { case '0':str2+="0000";break; case '1':str2+="0001";break; case '2':str2+="0010";break; case '3':str2+="0011";break; case '4':str2+="0100";break; case '5':str2+="0101";break; case '6':str2+="0110";break; case '7':str2+="0111";break; case '8':str2+="1000";break; case '9':str2+="1001";break; case 'A':str2+="1010";break; case 'B':str2+="1011";break; case 'C':str2+="1100";break; case 'D':str2+="1101";break; case 'E':str2+="1110";break; case 'F':str2+="1111";break; default:break; } } // 补齐位数,使成为3的倍数 if(len%3==1) str2="00"+str2; else if(len%3==2) str2="0"+str2; len=str2.length(); // 二进制转换八进制 j=0; for(i=0;i<=len-2;i+=3) { arr[j]=(str2[i]-'0')*4+(str2[i+1]-'0')*2+(str2[i+2]-'0'); ++j; } for(i=0;i<j;++i) { if(i==0 && arr[i]==0) continue;//使第一个数不为0 cout<<arr[i]; } cout<<endl; return 0; }
十进制转十六进制
1 #include <iostream> 2 #include <string.h> 3 using namespace std; 4 int main() 5 { 6 char hex[11]; 7 int n,i=0; 8 cin>>n; 9 if(n==0) //输入为0的情况 10 cout<<0; 11 while(n){ 12 int t=n%16; 13 if(t>9) 14 hex[i++]=t-10+'A'; 15 else 16 hex[i++]=t+'0'; 17 n/=16; 18 } 19 hex[i]='