ByteBuffer和byte數組互相轉換

1. byte 數組轉byteBuffer

	/**
	 * byte 數組轉byteBuffer
	 * @param byteArray
	 */
	public static ByteBuffer byte2Byffer(byte[] byteArray) {
		
		//初始化一個和byte長度一樣的buffer
		ByteBuffer buffer=ByteBuffer.allocate(byteArray.length);
		// 數組放到buffer中
		buffer.put(byteArray);
		//重置 limit 和postion 值 否則 buffer 讀取數據不對
		buffer.flip();
		return buffer;
	}

2. byteBuffer 轉 byte數組

/**
	 * byteBuffer 轉 byte數組
	 * @param buffer
	 * @return
	 */
	public static byte[] bytebuffer2ByteArray(ByteBuffer buffer) {
		//重置 limit 和postion 值 
		buffer.flip();
		//獲取buffer中有效大小
		int len=buffer.limit() - buffer.position();
		
		byte [] bytes=new byte[len];
		
		for (int i = 0; i < bytes.length; i++) {
		 bytes[i]=buffer.get();
			
		}
		
		return bytes;
	}

3.測試以上兩個方法

public static void main(String[] args) {
		
		byte [] a=new byte[] {1,2,4,5,6,7,8,9};
		
		System.out.println("-----------byte2Byffer轉換前----------");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]+",");
			
		}
		ByteBuffer buffer=byte2Byffer(a);
		System.out.println();
		System.out.println("-----------byte2Byffer轉換後----------");
		int len=buffer.limit()-buffer.position();	
		for (int i = 0; i < len; i++) {
			System.out.print(buffer.get()+",");
			
		}
		System.out.println("\n-----------bytebuffer2ByteArray轉換後----------");
		
		byte [] dest=bytebuffer2ByteArray(buffer);
		for (int i = 0; i < dest.length; i++) {
			System.out.print(dest[i]+",");
			
		}
		
	}

4.測試結果

-----------byte2Byffer轉換前----------
1,2,4,5,6,7,8,9,
-----------byte2Byffer轉換後----------
1,2,4,5,6,7,8,9,
-----------bytebuffer2ByteArray轉換後----------
1,2,4,5,6,7,8,9,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章