首頁  >  文章  >  Java  >  如何在 Java 長整型和位元組之間相互轉換?

如何在 Java 長整型和位元組之間相互轉換?

Susan Sarandon
Susan Sarandon原創
2024-11-09 02:35:02390瀏覽

How can I convert Java longs to bytes and back?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn