在Java 中將Long 轉換為位元組數組並傳回
在Java 中,將long 基本資料型別轉換為位元組數組(byte[] ),反之亦然是各種操作的常見任務,例如透過TCP 連線發送資料。以下是實現此轉換的全面解決方案:
Long 到 Byte Array
public byte[] longToBytes(long x) {
ByteBuffer buffer = ByteBuffer.allocate(Long.BYTES);
buffer.putLong(x);
return buffer.array();
}
此方法使用 ByteBuffer 類別建立大小為 Long.BYTES 的緩衝區,這是表示 long 值所需的位元組數。 putLong()方法用於將long值寫入緩衝區,array()方法傳回表示long的底層位元組數組。
Byte Array to 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();
}
要將位元組陣列轉換回 long,將會建立一個新的 ByteBuffer 並載入給定的位元組陣列。 Flip() 方法用於使緩衝區準備好讀取。最後,getLong()方法從緩衝區讀取long值。
封裝在Helper類別中
為了方便,可以將轉換方法封裝在一個實用程式中類別:
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();
}
}
此實用程式類別提供了執行轉換的簡單方法,而無需每次都建立和管理 ByteBuffer 實例。
Endianness 注意事項
注意ByteBuffer 類別使用系統的本機位元組序。如果需要跨平台相容性,則可能需要額外考慮處理字節序。
替代解決方案:使用庫
雖然上面提供的本機 Java 解決方案已經足夠,在某些情況下它們可能會變得乏味。對於複雜或擴展的資料轉換需求,請考慮使用 Guava 或 Apache Commons 等程式庫,它們提供更全面、更有效率的解決方案。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3