黑马程序员技术交流社区

标题: 没搞懂char[] arr=new char[8];// [打印本页]

作者: 转角~依然笑    时间: 2012-11-29 20:11
标题: 没搞懂char[] arr=new char[8];//
  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]+",");
          }
作者: 高志鹏    时间: 2012-11-29 20:40
num这个变量从何而来?
作者: 王舒玮    时间: 2012-11-29 21:28
8代表的是数组中的下标是8所对应的数组中的字符
作者: 黑马-王宁    时间: 2012-11-29 22:06
名为arr的数组的大小是8,至于为什么是8,能不能附上完整代码!
作者: 赵学刚    时间: 2012-11-29 22:29
lz的代码是视频里的进制转换的吧,那  char[] arr=new char[8];代表的就是转换后的16进制数的位数,如果按内存最多存储32位二进制来说,每四位二进制转换成一个16进制的话,所得16进制的最大数就是8
作者: 张其辉    时间: 2012-11-29 22:32
你这个用的是查表法吧,哪里不应该是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);
        }
作者: 李百韬    时间: 2012-11-29 22:42
本帖最后由 李百韬 于 2012-11-29 23:16 编辑

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


作者: 郭冬    时间: 2012-11-30 15:55
这个是因为数据类型而得到的8,如果你用大于8的数也可以实现功能,但是会无谓的增加内存使用量。可以说是杀鸡用了宰牛刀了。
1、程序的功能是把十进制的数转为十六进制,且被转的十进制数是int类型的,int类型的数据在内存中占4字节,也就是32位。
2、4位二进制数可以表示的最大十进制数是15,所以一个4位的二进制数刚好能与16进制数一一映射(即一一表示)。
3、一个int类型的整形数有32位,则可以表示8个16进制数,所以用长度为8的字符数组刚好够用。
作者: 转角~依然笑    时间: 2012-12-7 21:23
赵学刚 发表于 2012-11-29 22:29
lz的代码是视频里的进制转换的吧,那  char[] arr=new char[8];代表的就是转换后的16进制数的位数,如果按 ...

thank you very much




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