黑马程序员技术交流社区
标题:
将十进制数转换成十六进制数
[打印本页]
作者:
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