當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Binary轉Hexadecimal用法及代碼示例


顧名思義,十六進製數字係統由 16 個實體組成。這 16 個實體由 10 位數字組成,0-9 也代表十六進製係統的前 10 個數字。剩下的 6 個數字,我們用 A 到 F 的英文字母來表示數字 10 到 15。需要注意的是,十六進製係統中最小的數字是 0,最大的數字是 15,用 F 表示。十六進製數字可以通過將 4 位數字組合成十六進製數的單個字符,從二進製數導出。

例:

Input: 11011111
Output: DF
 
Input:10001101
Output:8D
  • 在上麵的示例中,二進製數 10001101 可以分解為 4 位的塊,例如 1000 和 1101,它們充當對應的十六進製數的 2 個字符。
  • 生成的十六進製數將是 8D,其中每個字符都是通過計算其在十進製係統中的對應值來確定的,如果在這種情況下是 two-digit 數字,則將其替換為字母表 D 表示 13。十六進製係統也稱為基數-16。

對於二進製到十六進製的轉換,我們將使用以下兩種方法:

  1. 使用 toHexString() 內置 java 方法
  2. 反複取餘數並將轉換後的十進製數除以 16

方法一:

使用這種方法,我們首先將二進製數轉換為存儲為整數的十進製數。然後,我們簡單地使用java的toHexString()方法來生成想要的輸出字符串。



用法:

public static String toHexString(int num)

參數:

  • num - 此參數指定要轉換的數字
    為十六進製字符串。數據類型是 int。

返回值:該函數將 int 參數的字符串表示形式返回為以 16 為底的無符號整數。

算法:

  1. 將二進製數轉換為十進製數。
  2. 要將二進製數轉換為十進製數,首先,通過除以 10 得到餘數來提取每個數字。
  3. 接下來,將此數字乘以 2 的遞增冪。
  4. 繼續將原始二進製數除以 10,以消除每次迭代中的最後一位。
  5. 得到十進製數後,隻需使用 toHexString() 方法即可獲得所需的輸出。

例:

Java


// Java program to convert binary to hexadecimal
class GFG {
    // method to convert binary to decimal
    int binaryToDecimal(long binary)
    {
        // variable to store the converted
        // binary number
        int decimalNumber = 0, i = 0;
        // loop to extract the digits of the binary
        while (binary > 0) {
            // extracting the digits by getting
            // remainder on dividing by 10 and
            // multiplying by increasing integral
            // powers of 2
            decimalNumber
                += Math.pow(2, i++) * (binary % 10);
            // updating the binary by eliminating
            // the last digit on division by 10
            binary /= 10;
        }
        // returning the decimal number
        return decimalNumber;
    }
    // method to convert decimal to hexadecimal
    String decimalToHex(long binary)
    {
        // variable to store the output of the
        // binaryToDecimal() method
        int decimalNumber = binaryToDecimal(binary);
        // converting the integer to the desired
        // hex string using toHexString() method
        String hexNumber
            = Integer.toHexString(decimalNumber);
        // converting the string to uppercase
        // for uniformity
        hexNumber = hexNumber.toUpperCase();
        // returning the final hex string
        return hexNumber;
    }
    // Driver Code
    public static void main(String[] args)
    {
        // instantiating the class
        GFG ob = new GFG();
        long num = 10011110;
       
        // calling and printing the output
        // of decimalToHex() method
        System.out.println("Inputted number:" +num);
        System.out.println(ob.decimalToHex(10011110));
    }
}
輸出
Inputted number:10011110
9E

方法二:

  • 在第二種方法下,我們再次首先將二進製數轉換為十進製數。
  • 然後我們不斷除以這個十進製數的餘數,得到原始二進製數中每組 4 位的單個字符。

算法:

  1. 使用上述算法中的步驟 2-4 將二進製轉換為十進製。
  2. 接下來,以十進製數為0的終止條件和每次迭代的十進製數除以16的更新條件運行一個while循環。
  3. 在每次迭代中,通過將數字除以 16 得到餘數。
  4. 構成一個新的字符串並繼續添加除以 16 的剩餘字符。
  5. 如果餘數大於或等於 10,則根據餘數將其替換為字母 A-F。

例:

Java


// Java program to convert binary to hexadecimal
class GFG {
    // method to convert binary to decimal
    int binaryToDecimal(long binary)
    {
        // variable to store the converted binary
        int decimalNumber = 0, i = 0;
        // loop to extract digits of the binary
        while (binary > 0) {
            // extracting each digit of the binary
            // by getting the remainder of division
            // by 10 and multiplying it by
            // increasing integral powers of 2
            decimalNumber
                += Math.pow(2, i++) * (binary % 10);
            // update condition of dividing the
            // binary by 10
            binary /= 10;
        }
        // returning the decimal
        return decimalNumber;
    }
    // method to convert decimal to hex
    String decimalToHex(long binary)
    {
        // variable to store the output of
        // binaryToDecimal() method
        int decimalNumber = binaryToDecimal(binary);
        // character array to represent double
        // digit remainders
        char arr[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
        // variable to store the remainder on
        // division by 16
        int remainder, i = 0;
        // declaring the string that stores the
        // final hex string
        String hexNumber = "";
        // loop to convert decimal to hex
        while (decimalNumber != 0) {
            // calculating the remainder of decimal
            // by dividing by 16
            remainder = decimalNumber % 16;
            // checking if the remainder is >= 10
            if (remainder >= 10)
               
                // replacing with the corresponding
                // alphabet from the array
                hexNumber = arr[remainder - 10] + hexNumber;
           
            else
               
                hexNumber = remainder + hexNumber;
            // update condition of dividing the
            // number by 16
            decimalNumber /= 16;
        }
        // returning the hex string
        return hexNumber;
    }
    // Driver Code
    public static void main(String[] args)
    {
        // instantiating the class
        GFG ob = new GFG();
        long num =11000011;
       
        // printing and calling the
        // decimalToHex() method
        System.out.println("Input:"+num);
        System.out.println("Output:" +ob.decimalToHex(num));
    }
}
輸出
Input:11000011
Output:C3




相關用法


注:本文由純淨天空篩選整理自ag01harshit大神的英文原創作品 Java Program to Convert Binary to Hexadecimal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。