在Java 中將Long 轉換為位元組數組並傳回
在Java 中,將long 值轉換為byte[] 並傳回可以是各種場景的共同需求。讓我們探索實現這一目標的有效方法。
將 Long 轉換為位元組陣列
要將 long 轉換為 byte[],我們可以利用 Java 的 ByteBuffer 類別。這是一個簡單的範例:
<code class="java">public byte[] longToBytes(long x) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.putLong(x); return buffer.array(); }</code>
將位元組陣列轉換為Long
要將byte[] 轉換回long,我們可以使用ByteBuffer 的另一個一個實例:
<code class="java">public long bytesToLong(byte[] bytes) { ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES); buffer.put(bytes); buffer.flip(); return buffer.getLong(); }</code>
注意:在上面的程式碼中,在檢索long 值之前調用buffer.flip() 至關重要,因為它將緩衝區從寫入模式切換為讀取模式。
優化的基於類的方法
到避免創建ByteBuffer 的多個實例以進行重複轉換,您可以創建一個單獨的類,例如this:
<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>
字節順序注意事項
在long 和byte[] 之間轉換時,您應該考慮您正在使用的系統的位元組順序和。位元組序是指位元組在記憶體中儲存的順序(小字節序或大字節序)。 Java 使用 big-endian,因此這方面是自動處理的。
替代方法
有像 Guava 這樣的替代庫提供了執行此類轉換的便捷方法。然而,這裡介紹的本機 Java 解決方案對於大多數用例來說都是高效且可靠的。
以上是如何在 Java 中將 Long 轉換為位元組數組並返回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!