Konvertieren von Java-Longs in Bytes und zurück
Bei der Übertragung von Daten über eine TCP-Verbindung ist es häufig erforderlich, Datentypen in Byte-Arrays umzuwandeln effiziente Übertragung. In Java kann die Konvertierung eines long in ein byte[] und zurück durch verschiedene Methoden erreicht werden.
Ein Ansatz ist die Verwendung der ByteBuffer-Klasse. Indem Sie einen ByteBuffer mit Long.BYTES (8 Bytes) erstellen, können Sie den Long-Wert mit der Methode putLong() speichern und das Byte-Array mit der Methode array() abrufen. Um das Byte-Array wieder in ein Long-Array umzuwandeln, müssen Sie einen weiteren ByteBuffer erstellen, das Byte-Array darin einfügen() und die Methode getLong() verwenden, um den Long-Wert zu erhalten.
Hier ist ein Beispiel:
<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>
Ein anderer Ansatz besteht darin, eine Hilfsklasse zu verwenden, um die wiederholte Erstellung von ByteBuffer zu vermeiden. Die ByteUtils-Klasse unten kapselt die Konvertierungsmethoden und macht die Erstellung mehrerer ByteBuffers überflüssig:
<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>
Es ist erwähnenswert, dass es auch Bibliotheken wie Guava gibt, die bequeme Möglichkeiten zur Durchführung dieser Konvertierungen bieten, wodurch der Bedarf an benutzerdefinierten Konvertierungen verringert wird Implementierungen. Diese Ansätze bieten jedoch den Vorteil, dass sie Endianness-Bedenken automatisch berücksichtigen und sicherstellen, dass Daten unabhängig von der zugrunde liegenden Systemarchitektur korrekt übertragen und interpretiert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Java-Longs in Bytes und zurück konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!