package com.shuzu; public class shuzuJinZhiZhuanHuan { * @param a 所要转换的十进制数,b 不同进制所要与(&)的数不同,wei 向右移动几位 * 查表法 * 十进制转二进制 * 十进制转十六进制 * 定义数组字符表 * 定义数组容器arr,长度为32位(二进制) or 8位(十六进制) * 定义指针pos * 循环传入参数(int a),判断a的值如果不等于0继续循环 * * 60---0000 0000 0000 0000 0000 0000 0011 1100 * &15 0000 0000 0000 0000 0000 0000 0000 1111 * ---------------------------------------------- * 0000 0000 0000 0000 0000 0000 0000 1100 = 12 'C' public static void main(String[] args) { // TODO Auto-generated method stub trans(60,15,4); } public static void trans(int a,int b,int wei){ char[] temp = { '0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F' }; //字符表 char[] arr = new char[32]; //定义容器,用来存储转换后的字符数组 int su = 0; //定义临时变量,用于存储与&之后的结果 int pos = arr.length; //定义指针下标,从数组的最后一位开始,用于从后往前存,将结果反转 while(a!=0){ //循环移位之后的十进制数 su = a & b; //将与&的结果存入临时变量su中 arr[--pos] = temp[su]; //temp[su],将字符表中下标位su的字符存入arr中,--pos,从数组的最后一位开始存,每次减一向前移动一位 a = a >>> wei; //将十进制数想右移动4位(十六进制) or 1位(二进制),一遍得到下一个四位的值