Java 十六进制转十进制

Java 十六进制转十进制

数字系统有四种类型:二进制、八进制、十进制和十六进制,其基值分别为2、8、10和16。基值取决于数字系统所包含的位数。例如,二进制数字系统只包含两个位数0和1。所以,它的基数是2。

在本文中,我们将讨论十六进制和十进制数字系统。还将编写Java程序来将十六进制转换为十进制数。

十六进制和十进制数字系统

十六进制数字系统

它表示从0到9和A到F的数字。总共有16个数字可用,其基值也是16。一个单独的数字具有16的乘幂权重,每个数字比前一个重16倍。12A16、34B16、45C16是十六进制的一些示例。在计算机中,颜色的代码通常以十六进制形式编写。

假设我们必须存储一个大的十进制值,如果我们将其存储在二进制编号系统中,那么二进制字符串可能会变得非常长。在这种情况下,我们可以使用十六进制数字系统,它可以将4位二进制存储为1位。它缩短了比特的长度。

十进制数字系统

它是最常用的数字系统。它有10个数字,从0到9。因此,它的基数是10。如果一个数字的基数没有提到,那么它被认为是10。一个单独的数字具有10的乘幂权重,每个数字比前一个重10倍。例如,1010、43110、98010等。

下表表示所有十六进制数字的二进制和十进制值−

Binary Decimal Hexadecimal
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E
1111 15 F

十六进制转十进制

让我们了解如何将十六进制转换为十进制。

示例1

将十六进制 (54A)16 转换为十进制 −

我们可以通过将每个数字乘以16n-1来将其转换为十进制,其中n是数字的位数。

(54A)16 = 5 * 163-1 + 4 * 162-1 + A * 161-1

= 5 * 162 + 4 * 161 + 10 * 160 [在十进制中A表示10,查看表格]

= 5 * 256 + 64 + 10 [160等于1]

= 1280 + 74

= 1354

现在,我们将看到一个Java程序,我们将应用上述逻辑将十六进制转换为十进制。

方法1:使用parseInt()方法

这是”Integer”类的静态方法,根据指定的基数返回一个十进制值。它位于”java.lang”包中。

语法

Integer.parseInt("String", base);

参数

  • String - 要转换的值

  • Base - 根据给定的基数进行转换

示例

public class Conversion {
   public static void main(String args[]) {  
      // Converting and storing hexadecimal value to dec1 and dec2 with base 16  
      int dec1 = Integer.parseInt("54A", 16);
      int dec2 = Integer.parseInt("41C", 16);
      System.out.println("Decimal value of given Hexadecimal: " + dec1);
      System.out.println("Decimal value of given Hexadecimal: " + dec2);
   }
}

输出

Decimal value of given Hexadecimal: 1354
Decimal value of given Hexadecimal: 1052

方法2:使用自定义方法

在这种方法中,我们将创建一个带有参数‘hexNum’的自定义方法cnvrt()。我们将声明并初始化‘hexStr’,它将以字符串形式存储所有十六进制数字。然后,我们将运行一个循环,循环次数为参数‘hexNum’的长度。在循环中,我们将从‘hexStr’中获取字符及其索引,然后应用转换的逻辑。

在主方法中,我们将调用方法‘cnvrt()’并传入不同的参数。

示例

public class Conversion {
   public static void cnvrt(String hexNum) {
      // storing all the hexadecimal digits to this string 
      String hexStr = "0123456789ABCDEF"; 
      // converting given argument to uppercase
      hexNum = hexNum.toUpperCase();   
      int dec = 0;  
      for (int i = 0; i < hexNum.length(); i++) {  
         char ch = hexNum.charAt(i); 
         // fetching characters sequentially 
         int index = hexStr.indexOf(ch); 
         // fetching index of characters  
         dec = 16 * dec + index; 
         // applying the logic of conversion 
      }
      System.out.println("Decimal value of given Hexadecimal: " + dec); 
   }
   public static void main(String args[]) {
      // calling the function with arguments
      cnvrt("54A"); 
      cnvrt("41C");  
   }
}

输出

Decimal value of given Hexadecimal: 1354
Decimal value of given Hexadecimal: 1052

结论

在本文中,我们已经了解了数制的类型。这些数制是任何数学运算的基础。此外,讨论了两种将十六进制数转换为十进制数的java程序的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程