进制之间的转换的问题

基本思路 16转化8进制  需要先转化成二进制形式  

1个16进制可以转化成4个二进制 

3个二进制可以转化成一个八进制

具体方法:(1)定义2个字符串

()把16进制的数输入到其中一个字符串中去

()把16进制字符串中的每一个数分情况讨论 比如1为0001

()把s2中的字符每算一次就加一次

()把s2的每三个转化成一个八进制的数字

注意点:字符串中S2+="0011"就可以表述在S2 后面加上一个0011的字符

             字符串中把每一个字符数字减去'0‘就表示成int’型的数字

2下面是一个16进制转化成10进制的操作

把16进制展开 每次计算的时候就*16加上当前的值

 注释掉的是一个错误的答案,因为把位数搞反了 把第一位当成最后一位 16的0次方进行计算了。

 1 #include <iostream>
 2 #include <string>
 3 #include <cmath>
 4 using namespace std;
 5 int main()
 6 {
 7     string s;
 8     long long  b=0;
 9     int c;
10     cin>>s;
11     for(int i=0;i<s.size();i++)
12     {
13         c=s[i]-'0';
14     /*    if(c<10)
15         {
16           // b=b+c*pow(16,i);
17           b=b*16+c;
18          } 
19          else
20          {
21              c=c-7;
22          /*    b=b+c*pow(16,i);
23          b=b*16+
24          }*/
25          if(c>=10)
26          {
27              c=c-7;
28          }
29          b=b*16+c;
30     }
31     cout<<b;
32     return 0;
33  } 

3.十进制转化成十六进制

这道题中的问题:主要是输入的时候的问题   long long 的用lld进行输入

#include <cmath>
#include <iostream>
#include <string>
using namespace std;
int main()
{
  long long a;
  int y[100];
  int i=0;
  scanf("%lld",&a);
  if(a==0)
  cout<<a;
  else{
       while(a)
  {
          y[i]=a%16;
          //cout<<y[i]<<endl;
          i++;
       a=a/16;
      //cout<<a<<endl;
      
  }
 
  for(int j=i-1;j>=0;j--)
   {
   //    cout<<y[j]<<endl;
       if(y[j]<10)
       {   cout<<y[j];continue;
       }
    
    else if(y[j]==10)
    {
        cout<<'A';continue;    
    }

    else if(y[j]==11)
    {
    cout<<'B';continue;    
    }
    
    else if(y[j]==12)
    {
            cout<<'C';continue;
    }

    else if(y[j]==13)
    {
        cout<<'D';continue;    
    }

    else if(y[j]==14)
    {
            cout<<'E';continue;
    }

    else 
    cout<<'F'; 
}
  } 
 
  return 0;
}

 4.十进制转化成八进制

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     int a[100];
 7     int i=0;
 8     cin>>n;
 9     while(n)
10     {
11         a[i]=n%8;
12         n=n/8;
13         i++;
14     }    
15   for(int j=i-1;j>=0;j--)
16   {
17         cout<<a[j];    
18   }
19     
20     return 0;
21 }

 

这种计算十进制转化成其他进制的数就是把% / 后面的数对应成相应的数字就可以

  

posted @ 2018-01-25 17:07  原来你还在这里e  阅读(259)  评论(0编辑  收藏  举报