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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沐小北 中级黑马   /  2014-7-8 10:58  /  1126 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code]public static  void toHex(int num)
                {
                        StringBuffer sb=new StringBuffer();
                        for(int x=0;x<8;x++)
                        {
                                int temp=num & 15;
                                if(temp>9)
                                        sb.append((char)(temp-10+'A'));
                                else
                                        sb.append(temp);
                                num= num>>>4;
                        }
                        System.out.println(sb.reverse());
               
                       
                }

里面temp-10+'A'中的A是什么?还有变量为什么要大于9??

2 个回复

倒序浏览
小于八是现将十进制转成八进制,然后在转成十六进制吗?
回复 使用道具 举报
本帖最后由 帮帮 于 2014-7-8 11:33 编辑

[code]public static  void toHex(int num)
                {
                        //存储十六进制字符串,例如0x6QB
                        StringBuffer sb=new StringBuffer();
                        //十六进制最大值为0xFFFFFFF,所以x(个数)小于8
                        for(int x=0;x<8;x++)
                        {
                                //把 num 和 15 转换成二进制,然后按位与运算
                                int temp=num & 15;
                                //如果大于9就用字母表示
                                if(temp>9)
                                        //A代表10,temp-10代表大于A的部分,加上个A代表往后的字母在编码表上所代表的数值,再用char转成字符,由append进行拼接十六进制的字符串
                                        sb.append((char)(temp-10+'A'));
                                else//如果不大于9则按照数字拼接
                                        sb.append(temp);
                                num= num>>>4;
                        }
                        System.out.println(sb.reverse());
               
                        
                }

十六进制的表示规则:它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-Z。

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