其他进制转化为10进制和10进制转化为其他进制(均一个函数)c++

今天专门抽出来一点时间来弄一下,进制转化的问题,不论是其他进制转化为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类中存储的是数字还是字母,再进行相应的转化。

猜你喜欢

转载自blog.csdn.net/sun9979/article/details/84645064
今日推荐