Java Long 與位元組的相互轉換
透過TCP 連線傳輸資料時,通常需要將資料型別轉換為位元組數組高效率轉移。在 Java 中,可以透過多種方法實作 long 與 byte[] 的相互轉換。
一種方法是使用 ByteBuffer 類別。透過使用 Long.BYTES(8 位元組)建立 ByteBuffer,您可以使用 putLong() 方法儲存 long 值,並使用 array() 方法檢索位元組數組。要將位元組數組轉換回 long,您需要建立另一個 ByteBuffer,將位元組數組 put() 放入其中,並使用 getLong() 方法來取得 long 值。
以下是一個範例:
<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>
另一種方法是使用輔助類別來避免重複建立 ByteBuffer。下面的ByteUtils 類別封裝了轉換方法,無需建立多個ByteBuffer:
<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>
值得注意的是,還有像Guava 這樣的函式庫提供了便捷的方法來執行這些轉換,減少了自訂的需要實施。然而,這些方法具有自動解決位元組順序問題的優勢,確保無論底層系統架構如何,都能正確傳輸和解釋資料。
以上是如何在 Java 長整型和位元組之間相互轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!