自动实现
class MetricConversion{public static void main(String[] args){int num = 60;String str = Integer.toHexString(num).toUpperCase(); // 转换后大写System.out.println("将十进制的" + num + "转换成十六进制为:" + str + "。");}}
运行结果:
将十进制的60转换成十六进制为:3C。
手动实现
十进制的 0~255 对应了二进制的 0000,0000 ~ 1111,1111。
class MetricConversion{public static void main(String[] args){int num = 60; // 二进制:0B00111100/*0~15 内,十进制转十六进制的方法:(十六进制的 10~15 分别用字母 A~F 表示。)以二进制作为转换介质,二进制状态下,每 4 位表示一个十六进制的 1 位。判断十六进制的数是否在 0~9 这 10 个数之间:是则返回它本身对应的字符型数字;否则返回一个字符型,其值是字符 'A' 加上超出 10 的部分。*/int s1 = num & 0B00001111; // 与运算(&)后,截取了后四位:0B00001100String i = (s1 > 9)?(char)(s1 - 10 + 'A') + "" : s1 + ""; // 求十六进制的第一位int s2 = num >>> 4; // 无符号右移 4 位,截取了前四位:0B00000011String j = (s2 > 9)? (char)(s2 - 10 + 'A') + "" : s2 + ""; // 求十六进制的第二位System.out.println(j + "" + i); // 拼接这两位}}
运行结果:
3C
