p进制数x转为十进制数y
int y = 0, product = 1; //product在循环中会不断乘p,得到1、p、p^2.....
while (x != 0) {
y = y + (x % 10)*product; //x%10是为了每次获取x的个位数
x = x / 10; //去掉x的个位
product = product * p;
}
十进制数y转为Q进制数z
采用“除基取余法”,基就是将要转换的进制Q。
int z[40], num = 0; //数组z存放Q进制数y的每一位,num为位数
do {
z[num++] = y % Q; //除基取余
y = y / Q;
} while (y != 0);//当商不为0时进行循环
//不使用while循环的原因是:如果十进制数y恰好等于0,那么使用while语句将使循环直接跳出,导致结果出错