Heim >Java >javaLernprogramm >Wie konvertiert man in Java einen Long-Wert in ein Byte-Array und zurück?

Wie konvertiert man in Java einen Long-Wert in ein Byte-Array und zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 21:08:01269Durchsuche

How to Convert a Long Value to a Byte Array and Back in Java?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn