zoukankan      html  css  js  c++  java
  • 随便练习的进制转换

    十六进制转化为十进制

    #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  }
  • 相关阅读:
    在虚拟机上安装Docker并运行镜像下
    分红包思想
    从微信授权到JWT认证——玩转token之路
    .Net(C#)数据库访问连接方式
    Asp.Net导出Excel表格之二(HttpContext.Current.Response)
    我的ip_本机ip_本地ip_本机ip地址_公网ip_ip地址查询
    干货版“测试小品”欢乐场景
    家用宽带搭建Hmailserver邮箱服务器
    【microPython与esp8266】之一——呼吸灯与PWM
    截取长文本,显示省略号(text-overflow:ellipsis)
  • 原文地址:https://www.cnblogs.com/yuxingyoucan/p/5172403.html
Copyright © 2011-2022 走看看