日期:2014-05-20  浏览次数:20549 次

十进制转换成十六进制

public class DtoH {
    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;
        }
    }
}

以上是一个十进制转换十六进制的小程序,把60这个十进制数转换成十六进制。
其中
temp-10+'A'
这段代码是什么意思呢?
我知道输出是十六进制的'C',但是想问下这个代码涉及到什么知识点?
难道10在十六进制是‘A’,2+'A'就等于'C'了?

------解决方案--------------------
将10、11、12、13、14、15对应输出成A、B、C、D、E、F
------解决方案--------------------
char t = 2 + 'A';

t = 'C';

2 + 'A' = 67
------解决方案--------------------
不同数据类型的数据参与运算,数据类型要强制转换,转换的方向是

(unsigned)char,(unsigned)short->int->unsigned->long->unsigned long->float->double