任意进制的转换

//////////////////////////////////////////
//  任意进制的转换
void turn(string X, int M, int N)
{
    //int M = 10, N = 2;
    vector<int> vec;
    int len = X.length();
    vector<int> data;        //保存M进制下的各个位数
    vector<int> output;      //保存N进制下的各个位数
    for (int i = 0; i<len; i++)
    {
        data.push_back(X[i] - '0');
    }
    int sum = 1;
    int d = 0;
    int k = 0;
    while (sum) {
        sum = 0;
        for (int i = 0; i<len; i++)
        {
            d = data[i] / N;
            sum += d;
            if (i == len - 1)
            {
                output.push_back(data[i] % N);
                k++;
            }
            else {
                data[i + 1] += (data[i] % N) * M;
            }
            data[i] = d;
        }
    }
    if (k == 0)
    {
        output.push_back(0);
        k--;
    }
    else
    {
        for (int i = 0; i<k; i++)
        {
            vec.push_back(output[k - i - 1]);
        }
    }
    for (int i = 0; i < vec.size(); ++i)
        cout << vec[i];
    cout << endl;
}

emmmm,还没看太懂。

猜你喜欢

转载自blog.csdn.net/zhanglu_1024/article/details/82184700