public static void trans(int num, int base, int offest) { //十进制转其他进制
if (num == 0) {
System.out.println(0);
}
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义一个临时数组用来储存每次与上base的结果
char[] arr = new char[32]; //如果base是1, err的长度最大, 为32.
//定义一个操作数组的指针, 从arr中最后一个角标开始存储
int pos = arr.length; //因为先--, 所以pos 不用 = arr.length-1 .
//开始循环
while(num != 0) {
//定义一个临时变量来记录每次与上base的结果
int temp = num & base;
//在chs中查找与temp相对应的字符, temp 最大为15, chs中15号角标正好为F.
arr[--pos] = chs[temp];
//pos-- //发现最后一次循环后pos还要自减一次, 所以先--
num = num >>> offest;
}
System.out.print("转换后: ");
for (int x = pos; x < arr.length; x++) {
System.out.print(arr[x]);
}
System.out.println();
System.out.println("----------------------------");
}
public static void toBin(int num) { //转二进制
trans(num, 1, 1);
}
public static void toOctal(int num) { //转八进制
trans(num,7,3);
}
public static void toHex(int num) { //转十六进制
trans(num,15,4);
}
主函数没写, 你自己随便扔一个进去吧 |