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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;        //无符号右移四位
                }
        }
}



5 个回复

倒序浏览
为什么输出来的是683,而不是十六进制的数?请哪位大神帮忙解答?
回复 使用道具 举报
顺序反了  而且被强转了
首先temp=12
(char)(68)在运算中被强转,因为后面的temp是int类型,于是输出了68
右移后输出了3
所以是683
回复 使用道具 举报
谢谢。方向反了,我懂了,可是60的十六进制是3c.第一次60&15时结果应该是12,转化为十六进制是c,所以需要将强转为char型的c.可结果确实68,我还是不太懂。可能是我的理解力太差了。
回复 使用道具 举报
要么放弃三元运算符,要么后面改char类型
回复 使用道具 举报
System.out.print((temp>9)?((char)(temp-9+'A')):temp);  再补充一下  是    减10    用10和temp判断
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马