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程序的方法。