码迷,mamicode.com
首页 > 其他好文 > 详细

随便练习的进制转换

时间:2016-01-31 03:05:08      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

十六进制转化为十进制

#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;//字符串以/0结束
20      cout<<strrev(hex)<<endl;    //倒序输出字符串
21     return 0;
22  }

 

随便练习的进制转换

标签:

原文地址:http://www.cnblogs.com/yuxingyoucan/p/5172403.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!