Maison  >  Article  >  Java  >  Comment convertir efficacement des entiers en tableaux d’octets en Java ?

Comment convertir efficacement des entiers en tableaux d’octets en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-09 03:09:02719parcourir

How to Efficiently Convert Integers to Byte Arrays in Java?

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 :

Alternativement, vous pouvez convertir manuellement l'entier en octet array :

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'aide dans java.nio.Bits :

La classe ByteBuffer utilise des méthodes d'assistance internes définies dans java.nio.Bits class :

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.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn