1. 把10进制转成N进制:除N取余,逆序排列
这里逆序排列使用StringBuilder类的reverse()函数来实现。
/**
* 10进制整数转换为N进制整数。 10进制转换为N进制的方法是:这个10进制数除以N,求出余数,并把余数倒叙排列。 除N取余,倒叙排列
* @param tenRadix
* 十进制整数
* @param radix
* 要转换的进制数,例如,要转成2进制数,radix就传入2
* @return radix进制的字符串
*/
public static String string10ToN(int tenRadix, int radix)
{
// 进制编码支持9+26=35进制
String code = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuilder buf = new StringBuilder();
int remainder = 0;
while (tenRadix != 0)
{
remainder = tenRadix % radix;// 求余数
tenRadix = tenRadix / radix;// 除以基数
buf.append(code.charAt(remainder));// 保存余数,记得要倒叙排列
}
buf.reverse();// 倒叙排列
return buf.toString();
}
2.把N进制数转成10进制数:按权展开
(1)这里的权就是N的ex次幂,例如2进制:1110=1*2^3+1*2^2+1*2^1+0*2^0 =8+4+2+0=14
所以这里需要一个求x的ex次幂的方法,这里用一个自定义的方法:
/**
* 返回x的ex次幂。
* @param x
* 底数
* @param ex
* 幂指数
* @return x的ex次幂
*/
public static int pow(int x, int ex)
{
int result = 1;
for (int i = 0; i < ex; i++)
{
result *= x;
}
return result;
}
当然也可以使用Math.pow()方法
下面是N进制转10进制的按权展开的方法:
/**
* 返回N进制对应的10进制数。
*
* @param N_num
* N进制数
* @param radix
* N进制计数