顧名思義,十六進製數字係統由 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。
對於二進製到十六進製的轉換,我們將使用以下兩種方法:
- 使用 toHexString() 內置 java 方法
- 反複取餘數並將轉換後的十進製數除以 16
方法一:
使用這種方法,我們首先將二進製數轉換為存儲為整數的十進製數。然後,我們簡單地使用java的toHexString()方法來生成想要的輸出字符串。
用法:
public static String toHexString(int num)
參數:
- num - 此參數指定要轉換的數字
為十六進製字符串。數據類型是 int。
返回值:該函數將 int 參數的字符串表示形式返回為以 16 為底的無符號整數。
算法:
- 將二進製數轉換為十進製數。
- 要將二進製數轉換為十進製數,首先,通過除以 10 得到餘數來提取每個數字。
- 接下來,將此數字乘以 2 的遞增冪。
- 繼續將原始二進製數除以 10,以消除每次迭代中的最後一位。
- 得到十進製數後,隻需使用 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 位的單個字符。
算法:
- 使用上述算法中的步驟 2-4 將二進製轉換為十進製。
- 接下來,以十進製數為0的終止條件和每次迭代的十進製數除以16的更新條件運行一個while循環。
- 在每次迭代中,通過將數字除以 16 得到餘數。
- 構成一個新的字符串並繼續添加除以 16 的剩餘字符。
- 如果餘數大於或等於 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
相關用法
- Java Hexadecimal轉Binary用法及代碼示例
- Python Binary轉Hexadecimal用法及代碼示例
- Python Decimal轉Hexadecimal用法及代碼示例
- Java Binary轉Octal用法及代碼示例
- Java Octal轉Binary用法及代碼示例
- Python binary轉ASCII用法及代碼示例
- Java java.sql.Date轉java.util.Date用法及代碼示例
- Java java.util.Date轉java.sql.Date用法及代碼示例
- Java TimeStamp轉Date用法及代碼示例
注:本文由純淨天空篩選整理自ag01harshit大神的英文原創作品 Java Program to Convert Binary to Hexadecimal。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。