2017-02-21 55 views

回答

3

1太大而無法存儲在2個字節中?

那麼,一個int是... putInt總是寫4個字節。從documentation for ByteBuffer.putInt

拋出:

BufferOverflowException - 如果是留在這個緩衝

少於四個字節,如果你只想把一個兩字節整數,使用putShort代替。如果您想要以可變寬度編碼(其中空間取決於值)存儲數據,則可能需要自己編寫代碼。

1

從方法putInt的javadoc的:

寫入四個字節含有給定int值,在當前的字節順序,到該緩衝區的當前位置,然後遞增由四個

位置

你只分配了2個字節,因此BufferOverflowException

當相對的put操作達到目標緩衝區的限制時拋出的未檢查異常。

可以解決expading到4個字節的緩衝或使用putShort僅使用2個字節來存儲數字1

1

ByteBuffer.putInt(1)把一個整數值到緩衝器中。一個整數是4個字節長(32位)。