黑马程序员技术交流社区

标题: 将十进制数转换成十六进制数 [打印本页]

作者: mingjing56    时间: 2015-4-10 22:37
标题: 将十进制数转换成十六进制数
class ToHex1
{
        public static void main (String [ ] args)
        {
                toHex(60);                //调用函数
        }
        public static void toHex(int num)        //声明函数,将十进制数转化为十六进制
        {
                while(num!=0)                //num只要不等于0,就继续循环
                {
                        int temp=num&15;
                        System.out.print((temp>9)?((char)(temp-9+'A')):temp);
                        num=num>>>4;        //无符号右移四位
                }
        }
}




作者: mingjing56    时间: 2015-4-10 22:39
为什么输出来的是683,而不是十六进制的数?请哪位大神帮忙解答?
作者: thoris    时间: 2015-4-10 22:49
顺序反了  而且被强转了
首先temp=12
(char)(68)在运算中被强转,因为后面的temp是int类型,于是输出了68
右移后输出了3
所以是683
作者: mingjing56    时间: 2015-4-10 23:01
谢谢。方向反了,我懂了,可是60的十六进制是3c.第一次60&15时结果应该是12,转化为十六进制是c,所以需要将强转为char型的c.可结果确实68,我还是不太懂。可能是我的理解力太差了。
作者: sisel    时间: 2015-4-10 23:12
要么放弃三元运算符,要么后面改char类型
作者: liyanghml    时间: 2015-4-11 21:48
System.out.print((temp>9)?((char)(temp-9+'A')):temp);  再补充一下  是    减10    用10和temp判断




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