Java Byte數組與Long的相互轉化

1.java.nio中的Buffer

java.nio(NEW IO)是JDK 1.4版本開始引入的一個新的IO API,可以替代標準的Java IO API。NIO與原來的IO有同樣的作用和目的,但是使用的方式完全不同, NIO支持面向緩衝區的、基於通道的IO操作。 NIO將以更加高效的方式進行文件的讀寫操作。

而緩衝區Buffer是一個容器對象,底層的存儲結構爲一個數組。在NIO中,所有的數據都是緩衝區來處理的。而使用緩衝區的好處顯而易見:第一可以減少實際物理的讀寫次數,第二緩衝區創建初始就被分配了內存,這個內存空間一直在被重用,可以減少動態分配和回收內存的次數。

在nio庫中,Buffer是一個抽象類,具體的實現類可以參考下圖

在這裏插入圖片描述

2.long轉byte數組

   public static byte[] toByteArray(long value) {
        return ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong(value).array();
    }

3.byte數組轉long

    public static long byteArrayToLong(byte[] bytes) {
        ByteBuffer buffer = ByteBuffer.allocate(8);
        buffer.put(bytes, 0, bytes.length);
        buffer.flip();
        return buffer.getLong();
    }

4.allocate

上面的allocate方法,作用是從堆空間中分配一個容量大小爲capacity的byte數組作爲緩衝區的byte數據存儲器,所有的數據操作,都是在這個byte數組中完成的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章