今天专门抽出来一点时间来弄一下,进制转化的问题,不论是其他进制转化为10进制还是10进制转化为其他进制,均使用同一个函数来完成,只需要手动输入从哪个进制转化为哪个进制。
代码如下:
#include <iostream>
#include <cmath>
#include <cctype>
using namespace std;
void TenToOther(int n1,int n2)
{
int n,s[100]={0},i=0;
string s2="0123456789ABCDEF"; //将s和s2对应起来,方便输出字母
cin>>n;
while(n!=0){
s[i++]=n%n2;
n/=n2;
}
for(int j=i-1;j>=0;j--)
if(j==0&&s[j]==0) continue;
else cout<<s2[s[j]];
}
void OtherToTen(int n1,int n2)
{
string s;
cin>>s;
int sum=0,k=s.size()-1;
for(int i=0;i<s.size();i++,k--)
if(isdigit(s[i]))sum+=int(s[i]-'0')*pow(n1,k);
else sum+=int(s[i]-'A'+10)*pow(n1,k);
cout<<sum<<endl;
}
int main()
{
int n1,n2,n;
cout<<"n1---->n2"<<endl;
cin>>n1>>n2;
if(n1==10) TenToOther(n1,n2);
else if(n2==10) OtherToTen(n1,n2);
return 0;
}
来总结一下:
1)十进制转化为其他进制时,为了避免余数超过10,所以对于输出的数据还是需要用s2来转化一下。
2)其他进制转化为十进制,因为其他进制中还有字母所以需要用一个string 类来存储输入的数据,最后在输入的时候,还需要判断一下这个string类中存储的是数字还是字母,再进行相应的转化。