随便练习的进制转换

十六进制转化为十进制

#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]='';//字符串以/0结束
20      cout<<strrev(hex)<<endl;    //倒序输出字符串
21     return 0;
22  }
原文地址:https://www.cnblogs.com/yuxingyoucan/p/5172403.html