黑马程序员技术交流社区

标题: 十进制转十六进制的问题 [打印本页]

作者: 徐-星星    时间: 2012-10-17 11:57
标题: 十进制转十六进制的问题
public class Test01 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                toHex_1(15);

        }
        public static void toHex_1(int num)
        {
                StringBuilder sb=new StringBuilder();
                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());
        }

}

各位同学,帮我看看问题出在哪里?或者正确的解法说一下。。
作者: 马良    时间: 2012-10-17 12:04
int temp=num%15;  你这里不应该是: int temp=num&15;吗?
作者: 徐-星星    时间: 2012-10-17 17:30
马良 发表于 2012-10-17 12:04
int temp=num%15;  你这里不应该是: int temp=num&15;吗?

对对。。。感觉学了后面就忘记了前面的东西,总感觉哪里不对。。呵呵,谢谢你!
作者: 黄小贝    时间: 2012-10-17 17:34
好久不见的说~~顶一下
作者: 马良    时间: 2012-10-17 18:30
徐-星星 发表于 2012-10-17 17:30
对对。。。感觉学了后面就忘记了前面的东西,总感觉哪里不对。。呵呵,谢谢你! ...

之前我也把这个弄混了,都这样的,慢慢来。
我前面的也忘的差不多了,还得往回看
作者: AngieFans85    时间: 2012-10-17 18:52
int temp=num%15;
这句改为:
int temp = num & 15;

除此之外,循环中的判断语句不要循环8次,用num != 0作为判断条件.
如果循环8次,会在正确结果前多补一些0(反正最后是8个数),这样的结果就比较怪异了,不符合人们已经习惯了的视觉.
作者: 汤瑞贺    时间: 2012-10-17 20:28
或者将   num=num>>>4;  改为  num=num/16;也可以吧
作者: 徐-星星    时间: 2012-10-18 11:39
汤瑞贺 发表于 2012-10-17 20:28
或者将   num=num>>>4;  改为  num=num/16;也可以吧

同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答!
作者: 徐-星星    时间: 2012-10-18 11:40
马镱洵 发表于 2012-10-17 18:52
int temp=num%15;
这句改为:
int temp = num & 15;

是的。。总感觉结果有些别扭,你提得很好,谢谢你的回答!
作者: 徐-星星    时间: 2012-10-18 11:43
黄小贝 发表于 2012-10-17 17:34
好久不见的说~~顶一下

呵呵  谢谢捧场啊!
作者: AngieFans85    时间: 2012-10-18 15:14
徐-星星 发表于 2012-10-18 11:39
同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答! ...

他其实只想告诉你,右移4位就是除以16.
左乘右除,右移1位就是除以2,右移2位就是除以4,右移3位就是除以8,右移4位就是除以16.
作者: 汤瑞贺    时间: 2012-10-19 17:15
徐-星星 发表于 2012-10-18 11:39
同学:你应该是新手吧。。好像你这样增加了算法的复杂度,并没有为我解决问题,谢谢你的回答! ...

:dizzy:, 敲错了,嘿嘿!我意思是把 你的这句 int temp=num%15;改为 int temp=num/16;也可以




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