进制转换

2019-05-03  本文已影响0人  HeoLis
//
// Created by heolis on 19-5-3.
//

#include <bits/stdc++.h>

using namespace std;

/*
 *  P 进制转换为10进制
 * */
int P_scale_to_decimalism(int x, int P) {
    int y = 0, product = 1;
    while (x != 0) {
        y = y + (x % 10) * product; // x % 10是为了每次获取x的个位数
        x = x / 10; // 去掉个位数
        product = product * P;
    }
    return y;
}

/*
 * 10进制转为Q进制
 * */
string Decimalism_to_Q_scale(int x, int Q) {
    int z[40], num = 0; // 数组z存放Q进制数y的每一位,num为位数
    do {
        z[num++] = x % Q;   //除基取余
        x = x / Q;
    } while (x != 0);
    reverse(z, z + num);
    string result;
    stringstream ss;
    for (int i = 0; i < num; ++i) {
        ss << z[i];
    }
    ss >> result;

    return result;
};

int main() {
    int n = 10;
    cout << P_scale_to_decimalism(n, 2) << endl;
    cout << Decimalism_to_Q_scale(n, 2) << endl;
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读