首页 > 技术文章 > 面试题:获取一个整数的16进制表现形式

kkkky 2017-10-30 19:33 原文

思路:

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

  

  

推荐阅读