Java 将十六进制转换为八进制
八进制数字 - 八进制数字也是一种可用的数字系统之一。八进制数字由0到7(0, 1, 2, 3… 7)表示。八进制数字在数字符号中表示为基8。
十六进制数字 - 十六进制数字也是一种可用的数字系统之一。十六进制数字由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 - 使用一些开关语句,定义给定十六进制数字的每个数字的适当十进制值。
步骤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编程。