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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 愤怒的小蔡! 于 2014-6-1 12:44 编辑

视频刚看到十进制转十六进制。 其中有句    System.out.println((char)(temp-10+'A'));  

想问下,((char)(temp-10+'A')) 要怎么理解?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

8 个回复

正序浏览
(char)是转换int型数据为char。
temp-10得一个值在+A。其中A是把字符转成了code码中对应的数字,code码中的字符是按照顺序排的。
下一个字符是B。
回复 使用道具 举报
给力,就这样,以后常来走走
回复 使用道具 举报
哈哈学到了
回复 使用道具 举报
本帖最后由 西门吹风 于 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')) 再将这个整数转换成对应的字母

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
(char)表示类型转换,把后面括号里的变量转换成字符型。十六进制的10用A表示,如果temp是10的话应该输出A,所以(temp-10+'A')就是(10-10+‘A’),这样输出的就是A了,如果temp是11的话就是是(11-10+'A')也就是B。以此类推。

点评

这个回答很详细,能理解  发表于 2014-6-1 12:40

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
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;

                }
        }
}

不好意思,第一次问问题,程序在这
回复 使用道具 举报
具体问题具体分析  你只贴这么一句 别人怎么知道呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马