Conversion efficace d'entiers en tableaux d'octets en Java
La conversion d'un entier en tableau d'octets peut être utile à diverses fins, telles que le réseau transmissions ou stockage de données. Il existe plusieurs approches pour réaliser cette conversion.
Classe ByteBuffer :
Une méthode efficace consiste à utiliser la classe ByteBuffer. ByteBuffer est un tampon qui stocke les données binaires et fournit diverses opérations pour les manipuler. Pour convertir un entier en tableau d'octets à l'aide de ByteBuffer :
ByteBuffer b = ByteBuffer.allocate(4); // Allocate a 4-byte buffer b.putInt(0xAABBCCDD); // Write the integer value to the buffer byte[] result = b.array(); // Retrieve the byte array from the buffer
Ici, l'ordre des octets du tampon garantit que les octets sont disposés dans le bon ordre.
Conversion manuelle :
Vous pouvez également convertir manuellement l'entier en un tableau d'octets :
byte[] toBytes(int i) { // Create a new byte array of length 4 byte[] result = new byte[4]; // Shift bits and assign to each byte result[0] = (byte) (i >> 24); result[1] = (byte) (i >> 16); result[2] = (byte) (i >> 8); result[3] = (byte) i; return result; }
Cette approche nécessite un décalage de bits explicite et une affectation à chaque octet.
Méthodes d'assistance dans java.nio.Bits :
La classe ByteBuffer utilise des méthodes d'assistance internes définies dans la classe java.nio.Bits :
private static byte int3(int x) { return (byte)(x >> 24); } private static byte int2(int x) { return (byte)(x >> 16); } private static byte int1(int x) { return (byte)(x >> 8); } private static byte int0(int x) { return (byte)(x >> 0); }
Ces méthodes simplifient les opérations de décalage de bits mentionnées ci-dessus.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3