思路:
15的二进制表现形式是0000 0000 0000 0000 0000 0000 0000 1111,所以一个数和15进行与运算就能得到后四位。
一个int型变量在内存中占4个字节,也就是8个十六进制位,所以循环八次。
查表法:
如果数据出现了对应关系,而且对应关系的一方是有序的数字编号,并作为角标使用,这时就必须要想到数组的使用。
0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
代码:
class IntToHex { public static void main(String[] args) { toHex(654); } public static void toHex(int num) { if (num == 0) { System.out.println("0"); return; } // 定义一个对应关系表。 char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; /* * 一会查表会查到比较的数据。 数据一多,就先存储起来,再进行操作。 所以定义一个数组作为临时容器。 */ char[] arr = new char[8]; int pos = arr.length; /*** while条件是nun!=0而不是pos,可以减少运算量。 ***/ while (num != 0) { int temp = num & 15; arr[--pos] = chs[temp]; num = num >>> 4; } System.out.println("pos=" + pos); for (int x = pos; x < arr.length; x++) { System.out.print(arr[x]); } } }