大数的进制转换

#include<bits/stdc++.h>
using namespace std;
//大数的进制转换,实际上这是大数除正常数的除法的做法
string a;
int b;
string trans(){
    string rt,aa=a;
    while(!aa.empty()){
        cout<<"aaaaa "+aa<<endl;
        int s=0,i;
        string bb;
        //去前导0
        for(i=0;i<aa.size();i++) 
            if(aa[i]!='0') break;
        if(i==aa.size()) break;
        for(;i<aa.size();i++){
            s=s*10+aa[i]-'0';
            cout<<s<<endl;
            if(b<=s){
                // s/b 可以得到除法的结果 
                bb.push_back(s/b+'0');
                cout<<s<<endl;
                s=s%b;
                cout<<"Dsa"<<" "<<s<<endl;;
            }
            else{
                bb.push_back('0');
            }
        }
        if(s<10)
        rt.push_back('0'+s);
        else rt.push_back('A'+s-10);
        aa=bb;
    }
    return string(rt.rbegin(),rt.rend());
}
int main()
{
    cin>>a>>b;
    cout<<trans()<<endl;
}

 

posted @ 2020-06-06 21:32  西伯利亚挖土豆  阅读(189)  评论(0编辑  收藏  举报