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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 橸瑩膤漃寞林 中级黑马   /  2014-3-10 15:30  /  1582 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 橸瑩膤漃寞林 于 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]+",");
                }

        }

5 个回复

正序浏览
本帖最后由 菜小徐 于 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数组的长度

回复 使用道具 举报
本帖最后由 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进制数对应一个数组中的元素。


回复 使用道具 举报
这里面char[] arr是存放转换结果的,数组长度是8,是因为一个int变量占4个字节,也就是32位,一个int值在计算机上就是一个32位的二进制数,十进制int值转换成十六进制时,是每4位二进制数转换成一个十六进制数,32/4=8, 所以结果数组长度就应该是8.
回复 使用道具 举报
char[] arr = new char[8];定义一个char类型的数组,数组的大小是8
回复 使用道具 举报
8是这个数组的大小啊。。。你要问什么问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马