数制转换

注意进制转换时对0的特殊处理。

int a,b;
string s;

char tran(int x)
{
    if(x >= 0 && x <= 9) return x+'0';
    else return 'A'+x-10;
}

int get(char c)
{
    if(isdigit(c)) return c-'0';
    else
    {
        c=toupper(c);
        return c-'A'+10;
    }
}

int main()
{
    while(cin>>a>>s>>b)
    {
        int res=0;
        for(int i=0;i<s.size();i++)
        {
            int k=get(s[i]);
            res=res*a+k;
        }

        vector<char> v;
        if(res == 0) v.pb('0');

        while(res)
        {
            char c=tran(res%b);
            v.pb(c);
            res/=b;
        }
        reverse(v.begin(),v.end());

        for(auto t:v) cout<<t;
        cout<<endl;
    }
    //system("pause");
    return 0;
}
posted @ 2021-01-30 19:23  Dazzling!  阅读(64)  评论(0编辑  收藏  举报