A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

说起用进制转换,有很多很多方法,当然,这种查表法是相对比较简单且实用的,比起其他过长的代码方法,这种更灵活一些。
这种方法用到了位运算的技巧和建立表以便查找的方法。
转换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的转换。是不是很方便

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 神马都是浮云

查看全部评分

2 个回复

正序浏览
学习了。。。。{:soso_e182:}
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马