思路:
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]);
}
}
}