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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 转角~依然笑 中级黑马   /  2012-11-29 20:11  /  4476 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B',
  'C','D','E','F'};
                char[] arr=new char[8];//这里为什么是8呢?
                int pos=arr.length;//pos指针,从最后一个位置添加元素,这样就不用反序
                while(num!=0){
                        int temp=num&15;
                        arr[--pos]=chs[temp];
                        num=num>>>4;
                }
                for(int x=pos;x<arr.length;x++){
                        System.out.print(arr[x]+",");
          }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
num这个变量从何而来?
回复 使用道具 举报
8代表的是数组中的下标是8所对应的数组中的字符
回复 使用道具 举报
名为arr的数组的大小是8,至于为什么是8,能不能附上完整代码!
回复 使用道具 举报
lz的代码是视频里的进制转换的吧,那  char[] arr=new char[8];代表的就是转换后的16进制数的位数,如果按内存最多存储32位二进制来说,每四位二进制转换成一个16进制的话,所得16进制的最大数就是8
回复 使用道具 举报
你这个用的是查表法吧,哪里不应该是8,应该是数组chs的长度:chs.length;你的应该是把一个数转换为16进制的,看看下面代码希望对你有帮助:
public static void convert3(int n) {
                int item = 15;
                char[] table = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
                String s = "";
                while(n > 0) {
                        int bit16 = n & item;//取n最后4位的值
//                        System.out.print(table[bit16]);//打印出来
                        s = table[bit16] + s;
                        n >>= 4;
                }
                System.out.println(s);
        }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 李百韬 于 2012-11-29 23:16 编辑

int类型为4B=32bit  4位二进制为一位十六进制 所以32/4=8  

回复 使用道具 举报
郭冬 中级黑马 2012-11-30 15:55:51
8#
这个是因为数据类型而得到的8,如果你用大于8的数也可以实现功能,但是会无谓的增加内存使用量。可以说是杀鸡用了宰牛刀了。
1、程序的功能是把十进制的数转为十六进制,且被转的十进制数是int类型的,int类型的数据在内存中占4字节,也就是32位。
2、4位二进制数可以表示的最大十进制数是15,所以一个4位的二进制数刚好能与16进制数一一映射(即一一表示)。
3、一个int类型的整形数有32位,则可以表示8个16进制数,所以用长度为8的字符数组刚好够用。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
赵学刚 发表于 2012-11-29 22:29
lz的代码是视频里的进制转换的吧,那  char[] arr=new char[8];代表的就是转换后的16进制数的位数,如果按 ...

thank you very much
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马