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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦超 中级黑马   /  2012-3-7 20:54  /  1312 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void newTo16(int num)
  2.         {
  3.                   //定义一个数组,把十六进制的所有值列出来
  4.          char [] arr={1,2,3,4, 5,6,7,8, 9,'A','B','C', 'D','E','F'};       

  5.         //定义一个数组,用于存放得到的十六进制值
  6.         char [] res=new char [8];

  7.         //只要这个数不等于0,就可以进入循环         
  8.         int i=res.length;                 //用于循环
  9.         while(num!=0)
  10.         {       
  11.                   int temp = num & 15;        //得到最低4位的十六进制值
  12.           res[--i]=arr[temp];                //把得到的十六进制数对应的值放入res数组中的最后一位
  13.           num>>>=4;                //右移4位
  14.         }
  15.         //遍历输出
  16.         for(int x=i; x<res.length;x++)
  17.         {
  18.             System.out.print(res[x]);       
  19.         }
  20. }
复制代码
这个方法在main中调用了,但是说出的结果很无语啊!我真不知道哪里有问题了~~麻烦帮帮忙找找!

4 个回复

倒序浏览
找到一个错误,就是char数组中的元素没有加'',总是会出现一些无语的小问题,但是我传进方法的参数是60,得到的答案却是4D,这是为什么啊?
回复 使用道具 举报
秦超 发表于 2012-3-7 21:00
找到一个错误,就是char数组中的元素没有加'',总是会出现一些无语的小问题,但是我传进方法的参数是60,得到的 ...

因为表制错了,你的表里12角标对应的字母是D,3角标对应的是4,在字符数组前面加个‘0’就可以了

评分

参与人数 1黑马币 +2 收起 理由
秦超 + 2 赞一个!

查看全部评分

回复 使用道具 举报
杨毅 发表于 2012-3-7 21:17
因为表制错了,你的表里12角标对应的字母是D,3角标对应的是4,在字符数组前面加个‘0’就可以了 ...

悲剧了~~忘了是从0开是的~
这种错误真的很无语唉`~谢谢楼上了!!!!!!
回复 使用道具 举报
char [] arr={1,2,3,4, 5,6,7,8, 9,'A','B','C', 'D','E','F'};        
出来数字单引号问题..少定义了个0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马