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+ 次查看

启动您的职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.