黑马程序员技术交流社区

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

作者: 愤怒的小蔡!    时间: 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