Conversion des fichiers longs Java en octets et inversement
Lors de la transmission de données via une connexion TCP, il est souvent nécessaire de convertir les types de données en tableaux d'octets pour transfert efficace. En Java, la conversion d'un long en byte[] et inversement peut être réalisée par diverses méthodes.
Une approche consiste à utiliser la classe ByteBuffer. En créant un ByteBuffer avec Long.BYTES (8 octets), vous pouvez stocker la valeur longue à l'aide de la méthode putLong() et récupérer le tableau d'octets à l'aide de la méthode array(). Pour reconvertir le tableau d'octets en long, vous devez créer un autre ByteBuffer, y mettre() le tableau d'octets et utiliser la méthode getLong() pour obtenir la valeur longue.
Voici un exemple :
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); } public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); // Ensure the buffer is ready for reading return buffer.getLong(); }</code>
Une autre approche consiste à utiliser une classe d'assistance pour éviter la création répétitive de ByteBuffer. La classe ByteUtils ci-dessous encapsule les méthodes de conversion, éliminant ainsi le besoin de créer plusieurs ByteBuffers :
<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>
Il convient de noter qu'il existe également des bibliothèques comme Guava qui fournissent des moyens pratiques d'effectuer ces conversions, réduisant ainsi le besoin de personnalisation mises en œuvre. Cependant, ces approches offrent l'avantage de répondre automatiquement aux problèmes d'endianité, garantissant que les données sont correctement transmises et interprétées quelle que soit l'architecture du système sous-jacent.
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!