黑马程序员技术交流社区

标题: char[] arr = new char[8]; [打印本页]

作者: 橸瑩膤漃寞林    时间: 2014-3-10 15:30
标题: char[] arr = new char[8];
本帖最后由 橸瑩膤漃寞林 于 2014-3-10 15:46 编辑

public static void toHex(int num)
        {
                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;

                while(num!=0)
                {
                        int temp = num & 15;
                        
                        //System.out.println(chs[temp]);
                        arr[--pos] = chs[temp];
                        

                        num = num >>> 4;
                }
                System.out.println("pos="+pos);
                //存储数据的arr数组遍历。
                for(int x=pos;x<arr.length; x++)
                {
                        System.out.print(arr[x]+",");
                }

        }


作者: 房建斌    时间: 2014-3-10 15:32
8是这个数组的大小啊。。。你要问什么问题
作者: 赵文超    时间: 2014-3-10 15:37
char[] arr = new char[8];定义一个char类型的数组,数组的大小是8
作者: chen_x    时间: 2014-3-10 15:39
这里面char[] arr是存放转换结果的,数组长度是8,是因为一个int变量占4个字节,也就是32位,一个int值在计算机上就是一个32位的二进制数,十进制int值转换成十六进制时,是每4位二进制数转换成一个十六进制数,32/4=8, 所以结果数组长度就应该是8.
作者: 2528870651    时间: 2014-3-10 16:30
本帖最后由 2528870651 于 2014-3-10 16:31 编辑
  1.    //定义一个临时容器。
  2.                 char[] arr = new char[8];//这里的8是什么意思。
  3.                 int pos = arr.length;
复制代码

char[8]   这个8代表这个数组的长度为8
因为数据在内存中用32位系统描述数据的话,
这32位已经能够描述很大的数了2^32
在这个程序中二级制转化成16进制
每4位二进制转换成1位16进制的话,
32位二进制转换成16进制刚刚好是8位
32/4=8
所以定义一个长度为8 的数组来装这8位数,
每一位16进制数对应一个数组中的元素。



作者: 菜小徐    时间: 2014-3-10 16:48
本帖最后由 菜小徐 于 2014-3-10 16:58 编辑

char[] arr = new char[8];//-----------8就是数组长度,arr[0],arr[1]……arr[7]这8个数
int pos = arr.length; //-----------pos=8,length是取出arr数组的长度






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