Java 中的十进制到十六进制转换器

2022-09-02 04:59:46

我有一个家庭作业,我需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的函数是将小数转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个函数来接受 a 并返回 .不幸的是,我没有任何这个函数的草稿,我完全迷失了。我所拥有的只是这个。int decString hex

  public static String decToHex(int dec)
  {
    String hex = "";


    return hex;
  }

另外,我不能使用那些预制函数,如Integer.toHexString()或任何东西,我需要实际制作算法,否则我不会学到任何东西。


答案 1

一种可能的解决方案:

import java.lang.StringBuilder;

class Test {
  private static final int sizeOfIntInHalfBytes = 8;
  private static final int numberOfBitsInAHalfByte = 4;
  private static final int halfByte = 0x0F;
  private static final char[] hexDigits = { 
    '0', '1', '2', '3', '4', '5', '6', '7', 
    '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
  };

  public static String decToHex(int dec) {
    StringBuilder hexBuilder = new StringBuilder(sizeOfIntInHalfBytes);
    hexBuilder.setLength(sizeOfIntInHalfBytes);
    for (int i = sizeOfIntInHalfBytes - 1; i >= 0; --i)
    {
      int j = dec & halfByte;
      hexBuilder.setCharAt(i, hexDigits[j]);
      dec >>= numberOfBitsInAHalfByte;
    }
    return hexBuilder.toString(); 
  }

  public static void main(String[] args) {
     int dec = 305445566;
     String hex = decToHex(dec);
     System.out.println(hex);       
  }
}

输出:

1234BABE

无论如何,有一个库方法可以做到这一点:

String hex = Integer.toHexString(dec);

答案 2

简单:

  public static String decToHex(int dec)
  {
        return Integer.toHexString(dec);
  }

如前所述:Java 将整数转换为十六进制整数