Java程式將十六進位制轉換為二進位制


二進位制數 − 有四種可用的數字系統。二進位制數就是其中之一。二進位制數由兩個數字表示,即一 (1) 和零 (0)。二進位制數在數字系統中表示為以 2 為基數。

十六進位制數 − 十六進位制數也是一種可用的數字系統。十六進位制數用 16 個數字表示,從 0 到 15 (0, 1, 2, 3... 15)。從 10 到 15,它表示為 A 到 F。十六進位制數在數字系統中表示為以 16 為基數。

在這裡,我們將十六進位制數轉換為二進位制數,其中我們為每個數字獲得四位二進位制數的組合。獲得所有這些二進位制數字後,我們將所有這些數字連線起來。透過這種方式,我們將十六進位制數轉換為二進位制數。

在本文中,我們將瞭解如何在Java中將十六進位制轉換為二進位制。

問題陳述

編寫一個 Java 程式,將給定的十六進位制數轉換為其二進位制等效值。每個十六進位制數字應轉換為一個四位二進位制數,並將二進位制值連線起來以形成最終的二進位制表示。下面是相同的演示 -

輸入 1

Input Hexadecimal number is 9AD.

輸出 1

The Binary converted value of it = 100110101101

輸入 2

Input octal number is 458

輸出 2

The Binary converted value of it = 100110101101.

將十六進位制轉換為二進位制的方法

我們提供了不同方法的解決方案 -

使用具有靜態輸入值的自定義方法

在這種方法中,我們透過靜態輸入方法宣告一個十六進位制輸入數,並將此數作為引數傳遞給自定義方法,然後在方法內部按照以下步驟,我們可以將十六進位制數轉換為二進位制數。

  • 開始
  • 為十六進位制數宣告一個字串變數。
  • 列印十六進位制數。
  • 呼叫轉換方法。
  • 在方法中,為十六進位制到二進位制對映建立一個HashMap
  • 迴圈遍歷十六進位制字串中的每個字元。
  • 檢索並連線二進位制值。
  • 列印二進位制轉換。
  • 停止

示例

import java.util.HashMap;
public class Main {
   public static void main(String[] args){
      String hexadecimalNumber = "12Fd89";
      System.out.println("Given Hexadecimal number is     ="+hexadecimalNumber.toUpperCase());
      System.out.println("The binary conversion of "+hexadecimalNumber.toUpperCase() + " is "+hexadecimalToBinary(hexadecimalNumber));
   }
 
   public static String hexadecimalToBinary(String hexadecimalNumber){
      String binaryNumber = "";
      hexadecimalNumber = hexadecimalNumber.toUpperCase();
      HashMap<Character, String> hm = new HashMap<Character, String>();
      hm.put('0', "0000");
      hm.put('1', "0001");
      hm.put('2', "0010");
      hm.put('3', "0011");
      hm.put('4', "0100");
      hm.put('5', "0101");
      hm.put('6', "0110");
      hm.put('7', "0111");
      hm.put('8', "1000");
      hm.put('9', "1001");
      hm.put('A', "1010");
      hm.put('B', "1011");
      hm.put('C', "1100");
      hm.put('D', "1101");
      hm.put('E', "1110");
      hm.put('F', "1111");
      for (int i = 0; i < hexadecimalNumber.length(); i++) {
         char c = hexadecimalNumber.charAt(i);
         if (hm.containsKey(c))
         binaryNumber += hm.get(c);
         else {
            binaryNumber = "You have entered an invalid Hexadecimal Number.";
            return binaryNumber;
         }
      }
      return binaryNumber;
   }
}

輸出

Given Hexadecimal number is = 12FD89
The binary conversion of 12FD89 is 000100101111110110001001

使用具有使用者輸入值的自定義方法

在這種方法中,我們獲取十六進位制數的使用者輸入,並將此數作為引數傳遞給自定義方法,然後在方法內部按照以下步驟,我們可以將十六進位制數轉換為二進位制數。

  • 開始
  • 建立一個用於輸入的 Scanner 物件。
  • 提示使用者輸入十六進位制數。
  • 讀取並列印十六進位制數。
  • 呼叫轉換方法。
  • 在方法中,為十六進位制到二進位制對映建立一個 HashMap。
  • 迴圈遍歷十六進位制字串中的每個字元。
  • 檢索並連線二進位制值。
  • 列印二進位制轉換。
  • 停止

示例

import java.util.*;
public class Main {
   public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      System.out.print("Enter a Hexadecimal Number = ");
      String hexadecimalNumber = sc.nextLine();
      System.out.println("Given Hexadecimal number is = "+hexadecimalNumber.toUpperCase());
      System.out.println("The binary conversion of "+ hexadecimalNumber.toUpperCase() + " is " +hexadecimalToBinary(hexadecimalNumber));
   }
   public static String hexadecimalToBinary(String hexadecimalNumber){
      String binaryNumber = "";
      hexadecimalNumber = hexadecimalNumber.toUpperCase();
      HashMap<Character, String> hm = new HashMap<Character, String>();
      hm.put('0', "0000");
      hm.put('1', "0001");
      hm.put('2', "0010");
      hm.put('3', "0011");
      hm.put('4', "0100");
      hm.put('5', "0101");
      hm.put('6', "0110");
      hm.put('7', "0111");
      hm.put('8', "1000");
      hm.put('9', "1001");
      hm.put('A', "1010");
      hm.put('B', "1011");
      hm.put('C', "1100");
      hm.put('D', "1101");
      hm.put('E', "1110");
      hm.put('F', "1111");
      for (int i = 0; i < hexadecimalNumber.length(); i++) {
         char c = hexadecimalNumber.charAt(i);
         if (hm.containsKey(c))
         binaryNumber += hm.get(c);
         else {
            binaryNumber = "You have entered an invalid Hexadecimal Number.";
            return binaryNumber;
         }
      }
      return binaryNumber;
   }
}
 

輸出

Enter a Hexadecimal Number = de453a
Given Hexadecimal number is = DE453A
The binary conversion of DE453A is 110111100100010100111010

在本文中,我們探討了如何使用不同的方法在 Java 中將十六進位制數轉換為二進位制數。一種使用靜態輸入,另一種使用使用者輸入。透過使用 HashMap 將十六進位制數字對映到其二進位制值,我們能夠有效地轉換每個數字並將結果連線起來以形成最終的二進位制表示。此練習有助於理解 Java 中的基本數字系統和字串操作。

更新於: 2024年7月23日

2K+ 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告