public class SearchForm {
public static void main(String[] args)
{
to16(60);
}
/*
* @see 使用查表法,将10进制数转换为16进制数
* @param value 要转换的数据
*/
public static void to16(int value)
{
//arr供查找的表
//查表法的运用场景:只要两组数据之间有对应关系,并且其中一组是有序的。
//'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'
char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int[] arrTemp=new int[8];
//指针
int pos=arrTemp.length;
if(value==0)
{
System.out.print(0);
}
while( value!=0)
{
int temp=0;
temp=value&15;
arrTemp[--pos]=temp;
value=value>>>4;
}
for (int i = pos; i < arrTemp.length; i++) {
int m=arrTemp[i];
String str=new String();
str=str+arr[m];
System.out.print(arr[m]);
}
}
10进制转换16进制实现原理:在内存中,16进制是4位2进制表示一个16进制数,对应关系如下:
第一种: 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15
第二种: 0、1、2、3、4、5、6、7、8、9、 A、 B、 C、 D、 E、 F
1、16进制是由四位2进制位表示一位,那么对应int类型的数据在内存中总共有8位,每乘以15一次,把结果放入一个临时数组中,然后右移4位,这种操作重复8次,就把60转换为16进制数存入临时数组,存放形式是上面的第一种形式。
2、我们定义一个字符串数组(表),存放第二种形式的字符,然后使用查表法把对应关系找出来即可。