优化:十进制转十六进制

来源:互联网 发布:幼儿考级舞蹈软件 编辑:程序博客网 时间:2024/05/20 06:52

第一次优化

去零。主要是优化二进制的0000,当为其时,不在进行运算。

/** * 优化:十进制转十六进制第一次优化 * @author Shoulder * */public class DecimalToHex1 {public static void main(String[] args) {String str_hex = toHex(1987);System.out.println(str_hex);//System.out.println(Integer.toHexString(200));}/** * 十进制转十六进制 * @param num 指定一个int类型的数字,对其进行十进制转十六进制 * @return temp */public static String toHex(int num){int temp = 0;char[] arr = new char[8];//声明数组当容器,存储转换后的十六进制位,为倒序的/* * 逆序输出,怎么去掉前面的0?二进制有效位是带1的,当右移4位后,所有有效位执行完,剩下的0可以不执行,比如3,二进制00000011 * 当右移第一次时,发现后边的全为0,即程序中的num为0,所以我们优化后的判断为num!=0时,由于没有了i,所以我们需声明变量index * 来给arr数组记录值。 *///for(int i=0;i<8;i++)int index = arr.length;while(num!=0){temp = num&15;if(temp>9)arr[--index] = (char)(temp-10+'A');elsearr[--index] = (char)(temp+'0');num = num>>>4;}               // System.out.println(index);  //将index传过去,从index开始记录即可                return toString(arr,index);}/** * 将字符数组转换为字符串 * @param arr 定义一个char类型的数组 * @return temp 返回字符串类型 *//*public static String toString(char[] arr){String temp = "";for(int i=0;i<arr.length;i++)//将其逆序输出。有空位,怎么去掉?{temp+=arr[i];}return "0x"+temp;}*/        public static String toString(char[] arr,int index)       {                String temp = "";                for(int i = index;i<arr.length;i++)    //将其逆序输出                {                       temp+=arr[i];                }                return "0x"+temp;        } }

第二次优化

查表。主要是通过数组char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};,根据取出每位的值,和表进行对比,然后输出。

char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[8];//声明数组当容器,存储转换后的十六进制位,为倒序的int index = arr.length;while(num!=0){temp = num&15;arr[--index] = chs[temp];//从表查,然后放入数组arr中num = num>>>4;}


0 0
原创粉丝点击