Convertir un entier en octet en Java

Mohammad Irfan 12 octobre 2023
  1. Conversion d’entiers en octets en Java
  2. Conversion d’entiers en octets et vice-versa en Java
  3. Conversion d’entiers en octets non signés en Java
  4. Conversion d’entiers en octets et vice versa à l’aide de Java 8
  5. Int to Byte à l’aide de la méthode byteValue() en Java
Convertir un entier en octet en Java

Ce didacticiel présente comment convertir des entiers en octets en Java.

En Java, int et byte sont tous deux des types primitifs et utilisés pour stocker des valeurs numériques. Les deux sont utilisés pour stocker des valeurs signées et non signées, mais ont des plages de stockage différentes. La plage d’octets est -128 à 127 et la plage d’entiers est -2,147,483,648 à 2,147,483,647. Donc, clairement, nous pouvons voir que int peut stocker une valeur plus grande que le type byte.

Lors de la conversion d’entiers en octets, certaines données sont perdues à cause de la mémoire. Voyons quelques exemples.

Conversion d’entiers en octets en Java

Dans cet exemple, nous convertissons int en octet par transtypage et voyons si la valeur int dépasse la plage d’octets. Si c’est le cas, il est converti en une valeur négative. Cela signifie que si une valeur est supérieure à la plage d’octets, elle est convertie en négatif. Ainsi, lorsque nous convertissons une grande valeur en type octet, nous obtenons un résultat différent du type int.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 127; // byte max positive range
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = 130; // Out of positive byte range
    System.out.println("int value = " + a);
    b = (byte) a;
    System.out.println("byte value = " + b);
  }
}

Production :

int value = 127
byte value = 127
int value = 130
byte value = -126

Conversion d’entiers en octets et vice-versa en Java

Pour convertir un type int en type byte, nous devons utiliser un transtypage explicite. Cependant, pour convertir l’octet en int, nous n’avons pas besoin de transtypage explicite. Java le fait implicitement. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = b;
    System.out.println("int value = " + a);
  }
}

Production :

int value = 230
byte value = -26
int value = -26

Conversion d’entiers en octets non signés en Java

Nous avons signé la conversion dans tous les exemples ci-dessus, mais si vous souhaitez une conversion non signée, utilisez le code ci-dessous. Ici, nous avons utilisé le code & 0xFF, ainsi que la valeur int, pour obtenir une conversion non signée. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = b & 0xFF;
    System.out.println("int value = " + a);
  }
}

Production :

int value = 230
byte value = -26
int value = 230

Conversion d’entiers en octets et vice versa à l’aide de Java 8

Si vous travaillez avec Java 8 ou une version supérieure, utilisez la méthode toUnsignedInt() de la classe Byte pour obtenir une conversion non signée. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    byte b = (byte) a;
    System.out.println("byte value = " + b);
    a = Byte.toUnsignedInt(b);
    System.out.println("int value = " + a);
  }
}

Production :

int value = 230
byte value = -26
int value = 230

Int to Byte à l’aide de la méthode byteValue() en Java

On peut aussi utiliser la méthode byteValue() de la classe Integer pour obtenir la valeur de l’octet après conversion. Cette méthode renvoie une valeur signée. Donc, ne l’utilisez que si vous voulez obtenir un résultat signé. Voir l’exemple ci-dessous.

public class SimpleTesting {
  public static void main(String[] args) {
    int a = 230;
    System.out.println("int value = " + a);
    Integer i = a;
    byte b = i.byteValue();
    System.out.println("byte value = " + b);
  }
}

Production :

int value = 230
byte value = -26

Article connexe - Java Int

Article connexe - Java Byte