Maison  >  Article  >  Java  >  Convertir un hexadécimal en octal en Java ?

Convertir un hexadécimal en octal en Java ?

WBOY
WBOYavant
2023-08-19 13:37:051253parcourir

Convertir un hexadécimal en octal en Java ?

Numéro Octal - Le nombre octal est également l'un des systèmes numériques disponibles. Le nombre octal est représenté par 8 chiffres allant de 0 à 7 (0, 1, 2, 3... 7). Les nombres octaux sont exprimés en base 8 dans le système numérique.

Nombre hexadécimal - Le nombre hexadécimal est également l'un des systèmes numériques disponibles. Le nombre hexadécimal est représenté par 16 chiffres allant de 0 à 15 (0, 1, 2, 3... 15). De 10 à 15, il est représenté par A à F. Les nombres hexadécimaux sont exprimés en base 16 dans le système numérique.

Ici, nous convertissons d'abord les nombres hexadécimaux en nombres binaires, où nous obtenons la combinaison de nombres binaires de quatre chiffres pour chaque chiffre. Après avoir obtenu tous ces chiffres binaires, nous concaténons tous ces chiffres, puis nous devons diviser l'ensemble des nombres binaires en mandrins où chaque partie est composée de trois chiffres. Nous pouvons ensuite convertir ces ensembles de nombres binaires en nombres octaux. De cette façon, nous convertissons le nombre hexadécimal en nombre octal.

D'une autre manière, après avoir obtenu la valeur décimale, nous trouvons continuellement le module par 8 valeurs, puis en concaténant ces valeurs, nous pouvons obtenir la valeur octale appropriée.

让我们看看如何使用Java编程语言来完成这个任务。

Pour vous montrer quelques instances

Instance-1

的中文翻译为:

实例-1

Le nombre hexadécimal d'entrée est 9AD

La valeur décimale convertie = 2477

Maintenant la valeur octale de 2477 = 4655

Instance-2

的中文翻译为:

实例-2

Le nombre hexadécimal d'entrée est 219A

La valeur décimale convertie = 8602

现在8602的八进制值为20632

Instance-3

的中文翻译为:

实例-3

Le nombre hexadécimal d'entrée est 21AD45

它的十进制转换值 = 2207045

现在2207045的八进制值为10326505

算法

Étape 1 - Obtenez le numéro d'entrée sous forme de chaîne soit par la méthode de saisie statique, soit par la méthode de saisie utilisateur.

Étape 2 - À l'aide de certains cas de commutation, nous définissons la valeur décimale appropriée de chaque chiffre du nombre hexadécimal donné.

第三步 - 在获得十进制值后,我们通过不断地找到8的模数值并连接它们来将其转换为适当的八进制值。

Étape 4 - À la fin, nous imprimons la valeur octale calculée en sortie.

Approches multiples

Nous avons fourni la solution selon différentes approches.

  • 通过使用静态输入值

  • 通过用户定义的方法

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

途径-1:通过使用静态输入值

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

Exemple

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 + ".");
   }
}

Sortie

The Octal Value of 87FA is 103772.

Approche-2 : en utilisant la méthode définie par l'utilisateur

Dans cette approche, nous déclarons un nombre d'entrée hexadécimal par méthode de saisie statique et transmettons ces nombres en tant que paramètres dans une méthode définie par l'utilisateur, puis à l'intérieur de la méthode en utilisant l'algorithme, nous pouvons convertir le nombre hexadécimal en nombre octal.

Exemple

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 + ".");
   }
}

Sortie

The Octal Value of 6FE4 is 67744.

Dans cet article, nous avons exploré comment convertir un nombre hexadécimal en nombre octal en Java en utilisant différentes approches.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer