黑马程序员技术交流社区
标题:
问个十进制转十六进制的基础问题
[打印本页]
作者:
愤怒的小蔡!
时间:
2014-6-1 11:21
标题:
问个十进制转十六进制的基础问题
本帖最后由 愤怒的小蔡! 于 2014-6-1 12:44 编辑
视频刚看到十进制转十六进制。 其中有句 System.out.println((char)(temp-10+'A'));
想问下,((char)(temp-10+'A')) 要怎么理解?
作者:
Hi天天向上
时间:
2014-6-1 11:25
具体问题具体分析 你只贴这么一句 别人怎么知道呢
作者:
愤怒的小蔡!
时间:
2014-6-1 11:35
Hi天天向上 发表于 2014-6-1 11:25
具体问题具体分析 你只贴这么一句 别人怎么知道呢
class toHex
{
public static void main(String[] args)
{
toHex(60);
}
//十进制转十六进制
public static void toHex(int num)
{
for(int x=0;x<8;x++)
{
int temp=num&15;
if(temp>9)
System.out.println((char)(temp-10+'A'));
else
System.out.println(temp);
num=num>>>4;
}
}
}
不好意思,第一次问问题,程序在这
作者:
汤姆纳斯
时间:
2014-6-1 12:11
(char)表示类型转换,把后面括号里的变量转换成字符型。十六进制的10用A表示,如果temp是10的话应该输出A,所以(temp-10+'A')就是(10-10+‘A’),这样输出的就是A了,如果temp是11的话就是是(11-10+'A')也就是B。以此类推。
作者:
西门吹风
时间:
2014-6-1 12:26
本帖最后由 西门吹风 于 2014-6-1 13:03 编辑
temp=num&15
temp可能小于等于9,也可能大于9,当temp小于等于9时直接打印,
而当temp大于9时需要将它转换成A~F中对应的字母
在十六进制中10用A表示、11用B表示...........
(temp-10+'A')运算时通过数据类型自动提升获取了temp在十六进制对应的字母在ACSII对应的整数,
通过((char)(temp-10+'A')) 再将这个整数转换成对应的字母
作者:
heima_xyu
时间:
2014-6-1 12:26
哈哈学到了
作者:
淡淡柠檬茶
时间:
2014-6-1 13:08
给力,就这样,以后常来走走
作者:
丁绍然
时间:
2014-6-1 14:28
(char)是转换int型数据为char。
temp-10得一个值在+A。其中A是把字符转成了code码中对应的数字,code码中的字符是按照顺序排的。
下一个字符是B。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2