public class Test17 {
public static void main(String[] args) {
toHex(60);
toBinary(21);
toOctal(33);
}
public static void toHex(int num) {
trans(num, 15, 4);//每四个二进制一组代表一个十六进制,用1111与
}
public static void toBinary(int num) {
trans(num, 1, 1);
}
public static void toOctal(int num) {
trans(num, 7, 3);//每三个二进制一组代表一个八进制用111与
}
public static void trans(int num, int base, int offset) {
char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
'B', 'C', 'D', 'E', 'F' };
char[] arr = new char[32];
int pos = arr.length;
while (num != 0) {
int temp = num & base;//用base与上一个数,取出该数二进制的之后offset位
arr[--pos] = chs[temp];//以上运算得到的数通过查表,输入arr数组中,从后面往前输入
num = num >>> offset;
}
for (int x = pos; x < arr.length; x++) {
System.out.print(arr[x]);//一一取出这个数组中的值
}
}
}
自定义进制转换
最新推荐文章于 2024-06-04 17:34:13 发布