Konvertieren von Long in ein Byte-Array und zurück in Java
Konvertieren eines langen primitiven Datentyps in ein Byte-Array (Byte[] ) und umgekehrt ist eine häufige Aufgabe für verschiedene Vorgänge, beispielsweise das Senden von Daten über eine TCP-Verbindung. Hier ist eine umfassende Lösung, um diese Konvertierung zu erreichen:
Long to Byte Array
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); }</code>
Diese Methode verwendet die ByteBuffer-Klasse, um einen Puffer der Größe Long.BYTES zu erstellen. Dies ist die Anzahl der Bytes, die erforderlich sind, um einen langen Wert darzustellen. Die putLong()-Methode wird verwendet, um den Long-Wert in den Puffer zu schreiben, und die array()-Methode gibt das zugrunde liegende Byte-Array zurück, das den Long-Wert darstellt.
Byte-Array zu Long
<code class="java">public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); // Flip the buffer to prepare for reading return buffer.getLong(); }</code>
Um das Byte-Array zurück in ein Long-Array zu konvertieren, wird ein neuer ByteBuffer erstellt und mit dem angegebenen Byte-Array geladen. Die Methode flip() wird verwendet, um den Puffer zum Lesen vorzubereiten. Schließlich liest die Methode getLong() den Long-Wert aus dem Puffer.
Kapselung in einer Hilfsklasse
Der Einfachheit halber können die Konvertierungsmethoden in einem Dienstprogramm gekapselt werden Klasse:
<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(); // Flip the buffer to prepare for reading return buffer.getLong(); } }</code>
Diese Dienstprogrammklasse bietet eine einfache Möglichkeit, die Konvertierung durchzuführen, ohne jedes Mal ByteBuffer-Instanzen erstellen und verwalten zu müssen.
Überlegungen zur Endianness
Beachten Sie, dass die ByteBuffer-Klasse die native Endianness des Systems verwendet. Wenn plattformübergreifende Kompatibilität erforderlich ist, sind möglicherweise zusätzliche Überlegungen zum Umgang mit Endianness erforderlich.
Alternative Lösung: Verwendung von Bibliotheken
Während die oben bereitgestellten nativen Java-Lösungen ausreichend sind, Sie können in bestimmten Szenarien mühsam werden. Erwägen Sie bei komplexen oder erweiterten Datenkonvertierungsanforderungen die Verwendung einer Bibliothek wie Guava oder Apache Commons, die umfassendere und effizientere Lösungen bieten.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in Java einen Long-Wert in ein Byte-Array und zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!