:::info 以整数 60 为例。 :::

自动实现

  1. class MetricConversion{
  2. public static void main(String[] args){
  3. int num = 60;
  4. String str = Integer.toHexString(num).toUpperCase(); // 转换后大写
  5. System.out.println("将十进制的" + num + "转换成十六进制为:" + str + "。");
  6. }
  7. }

运行结果:

  1. 将十进制的60转换成十六进制为:3C

手动实现

十进制的 0~255 对应了二进制的 0000,0000 ~ 1111,1111。

  1. class MetricConversion{
  2. public static void main(String[] args){
  3. int num = 60; // 二进制:0B00111100
  4. /*
  5. 0~15 内,十进制转十六进制的方法:(十六进制的 10~15 分别用字母 A~F 表示。)
  6. 以二进制作为转换介质,二进制状态下,每 4 位表示一个十六进制的 1 位。
  7. 判断十六进制的数是否在 0~9 这 10 个数之间:
  8. 是则返回它本身对应的字符型数字;
  9. 否则返回一个字符型,其值是字符 'A' 加上超出 10 的部分。
  10. */
  11. int s1 = num & 0B00001111; // 与运算(&)后,截取了后四位:0B00001100
  12. String i = (s1 > 9)?(char)(s1 - 10 + 'A') + "" : s1 + ""; // 求十六进制的第一位
  13. int s2 = num >>> 4; // 无符号右移 4 位,截取了前四位:0B00000011
  14. String j = (s2 > 9)? (char)(s2 - 10 + 'A') + "" : s2 + ""; // 求十六进制的第二位
  15. System.out.println(j + "" + i); // 拼接这两位
  16. }
  17. }

运行结果:

  1. 3C