如何在Java中将十六进制转换为八进制?
八进制数 - 八进制数也是一种可用的数字系统。八进制数用 8 个数字表示,从 0 到 7(0、1、2、3...7)。八进制数在数字系统中表示为以 8 为底。
十六进制数 - 十六进制数也是一种可用的数字系统。十六进制数用 16 个数字表示,从 0 到 15(0、1、2、3...15)。从 10 到 15,它分别表示为 A 到 F。十六进制数在数字系统中表示为以 16 为底。
在这里,我们首先将十六进制数转换为二进制数,其中每个数字的二进制数组合为四位数。获得所有这些二进制数后,我们将所有这些数字连接起来,然后必须将整个二进制数字集分成块,其中每个部分包含三位数字。然后,我们可以将这些二进制数字集转换为八进制数。通过这种方式,我们将十六进制数转换为八进制数。
换句话说,在获得十进制值后,我们连续求 8 的模值,然后通过连接这些值,我们可以得到相应的八进制值。
让我们看看如何使用 Java 编程语言来实现这一点。
举几个例子
示例 1
输入的十六进制数为 9AD
其转换后的十进制值为 2477
现在 2477 的八进制值为 4655
示例 2
输入的十六进制数为 219A
其转换后的十进制值为 8602
现在 8602 的八进制值为 20632
示例 3
输入的十六进制数为 21AD45
其转换后的十进制值为 2207045
现在 2207045 的八进制值为 10326505
算法
步骤 1 - 将输入数字作为字符串类型获取,可以通过静态输入方法或用户输入方法获取。
步骤 2 - 使用一些 switch case 定义给定十六进制数的每个数字的相应十进制值。
步骤 3 - 获取十进制值后,通过连续求 8 的模值并连接它们来将其转换为相应的八进制值。
步骤 4 - 最后,将计算出的八进制值作为输出打印。
多种方法
我们提供了不同方法的解决方案。
使用静态输入值
通过用户定义的方法
让我们逐一查看程序及其输出。
方法 1:使用静态输入值
在这种方法中,我们通过静态输入方法声明一个十六进制输入数字,并使用算法将十六进制数字转换为八进制数字。
示例
public class Main{ public static void main(String[] args){ //declare a variable to store the decimal number int decimalNumber = 0; //Declare and store a hexadecimal number by static input method. String hexadecimalNumber = "87FA"; int a = hexadecimalNumber.length() - 1; //Loop to find the appropriate decimal number of given hexadecimal number for(int i = 0; i < hexadecimalNumber.length() ; i ++ ){ //extract the character from the string. char c = hexadecimalNumber.charAt(i); switch (c){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': decimalNumber = decimalNumber + Integer.parseInt(Character.toString(c))*(int)Math.pow(16,a); a--; break; case 'a': case 'A': decimalNumber = decimalNumber + 10 * (int)Math.pow(16, a); a--; break; case 'b': case 'B': decimalNumber = decimalNumber + 11 * (int)Math.pow(16, a); a--; break; case 'c': case 'C': decimalNumber = decimalNumber + 12 * (int)Math.pow(16, a); a--; break; case 'd': case 'D': decimalNumber = decimalNumber + 13 * (int)Math.pow(16, a); a--; break; case 'e': case 'E': decimalNumber = decimalNumber + 14 * (int)Math.pow(16, a); a--; break; case 'f': case 'F': decimalNumber = decimalNumber + 15 * (int)Math.pow(16, a); a--; break; default: System.out.println("The number you have entered is invalid."); break; } } String octalNumber ="";// declare a variable to store the octal number in string format. //initiate the loop to convert decimal number into octal number. while(decimalNumber > 0){ octalNumber = decimalNumber % 8 + octalNumber; decimalNumber = decimalNumber / 8; } System.out.println("The Octal Value of "+ hexadecimalNumber + " is " + octalNumber + "."); } }
输出
The Octal Value of 87FA is 103772.
方法 2:使用用户定义的方法
在这种方法中,我们通过静态输入方法声明一个十六进制输入数字,并将这些数字作为参数传递给用户定义的方法,然后在方法内部使用算法将十六进制数字转换为八进制数字。
示例
public class Main{ public static void main(String[] args){ String inputNumber = "6FE4";//Declare and store a hexadecimal number by static input method. hexToOct(inputNumber);//call the user defined method to convert given hexadecimal number into octal. } //user defined method to convert the hexadecimal number into octal number public static void hexToOct(String hexadecimalNumber){ int decimalNumber = 0;//declare a variable to store the decimal number int a = hexadecimalNumber.length() - 1; //Loop to find the appropriate decimal number of given hexadecimal number for(int i = 0; i < hexadecimalNumber.length() ; i ++ ){ //extract the character from the string. char c = hexadecimalNumber.charAt(i); switch (c){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': decimalNumber = decimalNumber + Integer.parseInt(Character.toString(c))*(int)Math.pow(16,a); a--; break; case 'a': case 'A': decimalNumber = decimalNumber + 10 * (int)Math.pow(16, a); a--; break; case 'b': case 'B': decimalNumber = decimalNumber + 11 * (int)Math.pow(16, a); a--; break; case 'c': decimalNumber = decimalNumber + 12 * (int)Math.pow(16, a); a--; break; case 'd': case 'D': decimalNumber = decimalNumber + 13 * (int)Math.pow(16, a); a--; break; case 'e': case 'E': decimalNumber = decimalNumber + 14 * (int)Math.pow(16, a); a--; break; case 'f': case 'F': decimalNumber = decimalNumber + 15 * (int)Math.pow(16, a); a--; break; default: System.out.println("The number you have entered is invalid."); break; } } String octalNumber ="";// declare a variable to store the octal number in string format. //initiate the loop to convert decimal number into octal number. while(decimalNumber > 0){ octalNumber = decimalNumber % 8 + octalNumber; decimalNumber = decimalNumber / 8; } System.out.println("The Octal Value of "+ hexadecimalNumber + " is " + octalNumber + "."); } }
输出
The Octal Value of 6FE4 is 67744.
在本文中,我们探讨了如何使用不同的方法在 Java 中将十六进制数转换为八进制数。