我試試這個代碼: byte arr[] = ByteBuffer.allocate(2).putInt(1).array()
但是它失敗了一個BufferOverflowException
。 1太大而無法存儲在2個字節中?還是我的問題在其他地方?Java(Android) - BufferOverflowException on putInt
0
A
回答
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位)。
相關問題
- 1. MappedByteBuffer - BufferOverflowException
- 2. sun.misc.Unsafe putInt,getInt來源
- 3. 生成Javadoc時BufferOverflowException?
- 4. ADT得到BufferOverflowException在DDMS
- 5. SharedPreferences.Editor putString和putInt錯誤
- 6. PutInt捆綁不起作用
- 7. 當定位API時,Android dex在構建時會提供BufferOverflowException 8
- 8. Android/Java - Margin on left/right/bottom
- 9. 的Java客戶端的WebSockets暗流的BasicWebSocketSessionRemoteEndpoint sendBinary拋出BufferOverflowException
- 10. BufferOverflowException當試圖編碼數據
- 11. 將int轉換爲字節數組BufferOverflowException
- 12. Java Char on actionscript
- 13. Java NoSuchElementException on nextInt
- 14. Java * IDE * on * iPhone?
- 15. Java -cp on linux
- 16. 如何使用PutInt從寄存器CL打印
- 17. Android - Navigation_Mode_List on ActionBarSherlock
- 18. Uber Ride on android
- 19. ActionBarDisappearing on Android 4.0+
- 20. Everything on Activity - Android
- 21. nullpointer on intent android
- 22. 'Global'ProgressDialog on android
- 23. Xuggler on Android
- 24. x Android on AndroidwebView
- 25. db4o on android
- 26. Android - Pathfinding on map.png
- 27. Japnese TTS on android
- 28. Android asynctask on listview
- 29. Android PorterDuffXfermode on ICS
- 30. OMR/OCR on android