„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 08.11.2024
Durchsuche:874

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

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

public byte[] longToBytes(long x) {
    ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
    buffer.putLong(x);
    return buffer.array();
}

Diese Methode verwendet die ByteBuffer-Klasse, um einen Puffer der Größe Long.BYTES zu erstellen. Dies ist die Anzahl der Bytes, die zur Darstellung eines Long-Werts erforderlich sind. 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

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();
}

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 bereit zu machen. 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:

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();
    }
}

Diese Dienstprogrammklasse bietet eine einfache Möglichkeit, die Konvertierung durchzuführen, ohne jedes Mal ByteBuffer-Instanzen erstellen und verwalten zu müssen.

Überlegungen zu Endianness

Hinweis 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3