黑马程序员技术交流社区

标题: 分享一下用简单的查表法来完成十进制转16,2,8进制(面试很... [打印本页]

作者: 卞潇洋    时间: 2012-12-16 17:57
标题: 分享一下用简单的查表法来完成十进制转16,2,8进制(面试很...
说起用进制转换,有很多很多方法,当然,这种查表法是相对比较简单且实用的,比起其他过长的代码方法,这种更灵活一些。
这种方法用到了位运算的技巧和建立表以便查找的方法。
转换16进制的方法:
public static void toHex(int num){
         //创建一个char的数组,当作表,方便去查表
         char[] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
         char[] chs =new char[8];
        //point的相当于数组的指针
        int point = chs.length;
         while(num!=0){
           //与运算以后,将得到该数的16进制位的底位。而因为16进制的10以后的数字用字母表示所以这就用到了查表
           int temp = num&15;
           chs[--point]=ch[temp];
         //依次右移4位,计算出该数的16进制的各个位。
           num = num>>>4;
}
//输出的方法。
printArr(chs,point);
}

public static void printArr(char[] arr,int point){
//这里注意,存入数组后,16进制位是从数组的高位存的,所以遍历数组时,point指针起到了作用
    for(int x = point;x<arr.length;x++){
         System.out.print(arr[x]);
}
}
这是十进制转16进制的方法,该方法有一大好处,那就是当想转8进制或者2进制时,无须对方法做大的修改,只需&7、1即可,同时相应的右移3,和1位,便可完成对16,8,1的转换。是不是很方便


作者: 许庭洲    时间: 2012-12-18 08:35
值得学习ing!
作者: 谢文辉    时间: 2012-12-18 13:06
学习了。。。。{:soso_e182:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2