在开发过程中,可能需要将10进制的数据转换成指定进制的数并输出,借用数学中除数求余数的方式,可以得到任意进制的数据:
public static void transform(int sourceNumber, int scale) {
int[] destArrs = new int[100];
int index = 0;
int count = 0;
while (sourceNumber != 0) {
int remind = sourceNumber % scale;//求余数
sourceNumber = sourceNumber / scale;
destArrs[index++] = remind;
count++;
}
StringBuilder builder = new StringBuilder();
for (int i = count - 1; i >= 0; i--) {
System.out.print("" + destArrs[i]);
builder.append(destArrs[i]);
}
assert Integer.parseInt(builder.toString(), scale) == sourceNumber;
}
同理将任意进制的数都可以转换成指定进制的数,不过在Java中已经提供了对应的转换方式
Integer.parseInt(builder.toString(), scale)
或者自己手动实现下
public static void transformToTen(String sourceStr, int scale) {
int destNumber = 0;
String[] arrs = sourceStr.split("");
int len = arrs.length - 1;
int index = len;
for (String str : arrs) {
int s = Integer.parseInt(str);
double mult = Math.pow(scale, index--);
destNumber += s * mult;
}
assert Integer.parseInt(sourceStr, scale) == destNumber;
}
mark一下防止忘记!