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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 代文娟 中级黑马   /  2013-8-17 09:57  /  1375 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

十进制转换成十六进制
class ArrayText6
{
        public static void main(String[] args)
        {
                toHex(60);
        }
public static void toHex(int num)        {                char[]arr={'0','1','2','3', '4','5','6','7','8','9','A','B', 'C','D','E','F'};                char[]arr1=new char[8];      while(num!=0)      {     int i=0;                  int temp=num&15;                        arr1[i++]=arr[temp];                  num=num>>>4;      }            for (int i=0;i<arr1.length;i++ )          {                  System.out.print(arr1[i]+',');          }}}为什么我运行完之后是这样的结果9544444444444444


评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

4 个回复

倒序浏览
我发现你代码里有个错误。
  1. while(num!=0)
  2. {
  3.        int i=0;//这里有错误每次循环i都被初始化为0,当然不对了
  4.        int temp=num&15;
  5.        arr1[i++]=arr[temp];
  6.        num>>>4;
  7. }      
复制代码

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报
代码请放进代码框里,如图,排版整齐便于阅读。

下面是正确的代码,指针应该放到循环体外面
  1. public static void toHex(int num)
  2.                 {
  3.                         char[] chs = {'0','1','2','3',
  4.                                                         '4','5','6','7',
  5.                                                                 '8','9','a','b',
  6.                                                                         'c','d','e','f'};
  7.                        
  8.                         char[] arr = new char[8];
  9.                         int pos = arr.length;//指针
  10.                         while(num!=0)
  11.                         {
  12.                                 int temp = num & 15;
  13.                                
  14.                                 arr[--pos] =chs [temp];
  15.                                 num = num >>>4;


  16.                         }
  17.                         for(int x=pos;x<arr.length;x++)
  18.                         {
  19.                                 System.out.print(arr[x]);
  20.                         }

  21.                 }
复制代码

QQ图片20130817102920.jpg (3.49 KB, 下载次数: 27)

QQ图片20130817102920.jpg

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
薛鹏鹏 发表于 2013-8-17 10:32
代码请放进代码框里,如图,排版整齐便于阅读。

下面是正确的代码,指针应该放到循环体外面 ...

谢了,谢了
回复 使用道具 举报
public static void main(String[] args){
                toHex(60);
        }

        public static void toHex(int num){
                char[] arr={'0','1','2','3', '4','5','6','7','8','9','A','B', 'C','D','E','F'};
                char[] arr1=new char[8];
                int j=0;//这样子试试
                while(num!=0){
                       
                        int temp=num&15;
                        arr1[j++]=arr[temp];
                        num=num>>>4;
                }
                for (int i=0;i<arr1.length;i++ ){
                                System.out.print(arr1[i]+',');
                }
        }       
       

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 很给力!

查看全部评分

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