自动实现
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; // 与运算(&)后,截取了后四位:0B00001100
String i = (s1 > 9)?(char)(s1 - 10 + 'A') + "" : s1 + ""; // 求十六进制的第一位
int s2 = num >>> 4; // 无符号右移 4 位,截取了前四位:0B00000011
String j = (s2 > 9)? (char)(s2 - 10 + 'A') + "" : s2 + ""; // 求十六进制的第二位
System.out.println(j + "" + i); // 拼接这两位
}
}
运行结果:
3C