• 随便练习的进制转换


    十六进制转化为十进制

    #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  }
  • 相关阅读:
    第六次实训作业
    事件处理程序
    第四次实训作业
    I/O流
    课程总结
    求和计算器
    常用类的课后作业
    窗口实训1
    课后练习----实现窗口的切换
    第五次实训作业继承
  • 原文地址:https://www.cnblogs.com/yuxingyoucan/p/5172403.html
Copyright © 2020-2023  润新知