En Java, un int est un entier signé 32 bits, tandis qu’un octet est un entier signé 8 bits. La conversion d’un entier en octet peut être utile dans certaines situations, comme lorsque vous travaillez avec des données binaires ou lorsque vous envoyez des données sur un réseau. Dans cet article, nous allons explorer différentes manières de convertir un int en un octet en Java. Nous discuterons d’abord de la méthode traditionnelle d’utilisation de la conversion de type, puis nous examinerons l’utilisation du décalage de bits / du masquage de bits.
Notez que lors de la conversion de int en octet, la valeur de int sera tronquée pour tenir dans la plage de 8 bits d’un octet si int est supérieur à cette plage. Cela peut entraîner une perte de données et doit être pris en compte lors de l’utilisation de ces méthodes.
Convertir les entiers en octets
L’un des moyens les plus simples de convertir un int en octet en Java consiste à utiliser la conversion de type. La conversion de type est le processus de conversion d’un type de données en un autre. Dans ce cas, nous convertissons un int en un octet. La syntaxe de la conversion de type consiste à placer le type de données cible entre parenthèses avant la variable ou la valeur qui doit être convertie.
Par exemple, le code suivant convertit la variable int myInt
à un octet :
int myInt = 128;
byte myByte = (byte) myInt;
Dans ce cas, la valeur de myInt (128) est supérieure à la valeur maximale pouvant être stockée dans un octet (127), de sorte que la valeur sera tronquée pour tenir dans la plage de 8 bits. La valeur résultante de myByte
sera -128.
Une autre façon de convertir int en octet consiste à utiliser le décalage de bits et le masquage de bits. Le décalage de bits est le processus de déplacement des bits d’un nombre binaire vers la gauche ou vers la droite. Bit fonctionne en utilisant un masque binaire pour extraire ou modifier des bits spécifiques dans un nombre binaire. Plus précisément, cela fonctionne en tronquant l’entier à la taille d’un octet.
Le code suivant montre comment convertir un entier en octet en utilisant le masquage de bits :
int myInt = 128;
byte myByte = (byte) (myInt & 0xff);
Ce code effectue d’abord une opération ET au niveau du bit entre myInt
et la valeur hexadécimale 0xff
(ce qui équivaut à 255 en décimal). Cela définit tous les bits supérieurs au 8ème bit à zéro, tronquant ainsi la valeur de myInt
pour tenir dans la plage de 8 bits d’un octet. Ensuite, le résultat est converti en type byte.
Cette méthode est un peu plus explicite sur la façon dont la conversion se produit réellement puisque vous avez plus de contrôle sur la troncature.
Utilisation des aides à la conversion
Une autre façon de convertir un int en un octet (ou vice versa) en Java consiste à utiliser le Byte
et Integer
Des classes. Le Byte
class, par exemple, fournit une méthode statique appelée toUnsignedInt
qui peut être utilisé pour la conversion, tandis que le Integer
classe fournit une méthode appelée byteValue
qui peut être utilisé pour convertir un entier en un octet.
Voyons d’abord comment convertir un octet en entier, ce que nous pouvons réaliser avec Byte.toUnsignedInt
. Voici un exemple:
byte myByte = -128;
int myInt = Byte.toUnsignedInt(myByte);
Dans ce cas, la valeur de myByte
est -128, ce qui est hors de la plage de l’octet signé, mais puisque la méthode toUnsignedInt
est utilisé, il convertira l’octet en entier non signé et le résultat sera 128.
De même, vous pouvez utiliser le Integer
classe pour convertir un int en un octet. Voici un exemple d’utilisation de Integer
class et sa méthode d’assistance pour convertir un int en un octet :
Integer myInt = new Integer(200);
byte myByte = myInt.byteValue();
La méthode byteValue()
convertira l’int en un octet. Semblable à la conversion de type, si int est plus grand que la plage d’octets, l’int sera tronqué pour tenir dans la plage de 8 bits d’un octet.
En utilisant le Integer
La classe peut être utile lorsque vous travaillez avec des entiers et que vous devez les convertir en octets de manière plus lisible, sans avoir besoin de transtypage de type ou de manipulation de bits, ce qui peut être plus sujet aux problèmes.
Conclusion
En résumé, il existe plusieurs façons de convertir un int en un octet en Java, notamment en utilisant la conversion de type, le décalage de bits et le masquage de bits, et le Integer
méthode de classe byteValue()
. Chaque méthode a ses propres cas d’utilisation et il est important de choisir la bonne en fonction des exigences spécifiques de votre projet. Par exemple, avez-vous besoin d’une conversion signée ou non signée ? En général, en utilisant le Integer
la méthode de classe “byteValue()” est plus lisible et moins sujette aux erreurs.