Maison >Java >javaDidacticiel >Comment convertir un long en tableau d'octets et inversement en Java ?
Convertir Long en tableau d'octets et inversement en Java
En Java, convertir une valeur longue en octet[] et inversement peut être un problème exigence commune pour divers scénarios. Explorons des moyens efficaces pour y parvenir.
Conversion de Long en tableau d'octets
Pour convertir un long en octet[], nous pouvons utiliser la classe ByteBuffer de Java. Voici un exemple simple :
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); }</code>
Conversion d'un tableau d'octets en long
Pour reconvertir l'octet[] en long, nous pouvons utiliser une autre instance de ByteBuffer :
<code class="java">public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); return buffer.getLong(); }</code>
Remarque : Dans le code ci-dessus, il est crucial d'appeler buffer.flip() avant de récupérer la valeur longue, car cela fait passer le tampon du mode écriture au mode lecture.
Approche optimisée basée sur les classes
Pour éviter de créer plusieurs instances de ByteBuffer pour des conversions répétées, vous pouvez créer une classe distincte comme celle-ci :
<code class="java">public class ByteUtils { private static ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); public static byte[] longToBytes(long x) { buffer.putLong(0, x); return buffer.array(); } public static long bytesToLong(byte[] bytes) { buffer.put(bytes, 0, bytes.length); buffer.flip(); return buffer.getLong(); } }</code>
Considérations sur le caractère boutien
Lors de la conversion entre long et byte[], vous devez prendre en compte le caractère boutiste du système avec lequel vous travaillez. L'endianité fait référence à l'ordre dans lequel les octets sont stockés en mémoire (petit-boutiste ou gros-boutiste). Java utilise le big-endian, donc cet aspect est géré automatiquement.
Approches alternatives
Il existe des bibliothèques alternatives comme Guava qui fournissent des méthodes pratiques pour effectuer ce type de conversion. Cependant, les solutions Java natives présentées ici peuvent être efficaces et fiables pour la plupart des cas d'utilisation.
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!