[英]ByteBuffer.flip() Issue
我的課如下:
final ByteBuffer data;
1st_constructor(arg1, arg2, arg3){
data = ByteBuffer.allocate(8);
// Use "put" method to add values to the ByteBuffer
//.... eg: 2 ints
//....
data.flip();
}
1st_constructor(arg1, arg2){
data = ByteBuffer.allocate(12);
// Use "put" method to add values to the ByteBuffer
//.... eg: 3 ints
//....
data.flip()
}
在主類中,我創建了一個名為“ data_packet”的類的實例,並將ByteBuffer“ data”的內容存儲到byte []中。
data_packet.data.get(buf,0,buf.length);
隨后,當我使用時:
data_packet.data.getInt();
我收到“ BufferUnderFlow異常”。 但是,如果在使用getInt()之前再次翻轉緩沖區,它會正常工作。
所以我的問題是,為什么我需要再次翻轉緩沖區? 它是否已設置為在構造函數中讀取?
謝謝。
flip用於將ByteBuffer從“讀取”(放置)翻轉到“ write”(獲取):使用一系列put填充ByteBuffer后,flip會將緩沖區的限制設置為當前位置並重置該位置歸零。 這具有使將來從緩沖區進行獲取或寫入的作用,而不必再寫入緩沖區中的所有內容。
完成放置后,您可能需要重用ByteBuffer來構造另一個數據結構。 要“翻轉”它,請調用reset。 這會將限制重置為容量(使所有緩沖區可用),並將位置重置為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.