在 Java 中将十六进制转换为八进制?

javaobject oriented programmingprogramming

八进制数 - 八进制数也是可用的数字系统之一。八进制数用 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 案例,我们定义给定十六进制数的每个数字的适当十进制值。

步骤 3 - 获取十进制值后,我们通过连续查找 8 个值的模数并将它们连接起来,将其转换为适当的八进制值。

步骤 4 - 最后,我们将计算出的八进制值打印为输出。

多种方法

我们提供了不同方法的解决方案。

  • 通过使用静态输入值

  • 通过用户定义的方法

让我们逐一查看程序及其输出。

方法 1:通过使用静态输入值

在这种方法中,我们通过静态输入方法声明一个十六进制输入数字,然后使用算法将十六进制数字转换为八进制数字。

示例

public class Main{
    public static void main(String[] args){
    
        //声明一个变量来存储十进制数字
        int decimalNumber = 0;
        
        //通过静态输入方法声明并存储十六进制数字。
        String hexadecimalNumber = "87FA";
        int a = hexadecimalNumber.length() - 1;
        
        //循环查找给定十六进制数的适当十进制数
        for(int i = 0; i < hexadecimalNumber.length() ; i ++ ){
        
        //从字符串中提取字符。
         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 ="";// 声明一个变量,以字符串格式存储八进制数。

	  //启动循环,将十进制数转换为八进制数。
      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";//通过静态输入方法声明并存储十六进制数字。
        hexToOct(inputNumber);//调用用户定义方法将给定的十六进制数字转换为八进制数字。
    }
    //用户定义方法将十六进制数字转换为八进制数字
   public static void hexToOct(String hexadecimalNumber){
      int decimalNumber = 0;//declare a variable to store the decimal number
      int a = hexadecimalNumber.length() - 1;
      //循环查找给定十六进制数的适当十进制数
      for(int i = 0; i < hexadecimalNumber.length() ; i ++ ){
         //从字符串中提取字符。
         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 ="";// 声明一个变量,以字符串格式存储八进制数。
      // 启动循环,将十进制数转换为八进制数。      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 中将十六进制数转换为八进制数。


相关文章