我有一个场景,其中基于给定的String我需要返回一个整数值。 我正在将String哈希到一个字节数组。现在,由于我的Integer范围是0-999,可以用2bytes表示,因此我希望使用字节数组的最后两个字节将其转换为integer。 但是我没有得到正确的结果
我尝试使用字节缓冲区包装方法,将offset定义为length-3并将长度定义为2
ByteBuffer.wrap(bytes,bytes.length-3,2).getInt()
我期望基于数组的最后两个字节的整数数据,但得到 线程“主”中的异常java.nio.BufferUnderflowException
答案 0 :(得分:3)
ByteBuffer#getInt
从当前位置开始读取4
个字节,但是包装的ByteBuffer
的剩余大小(limit - position
)为2
,因此抛出BufferUnderflowException
。相反,您应该使用ByteBuffer#getShort
,它可以存储在int
中。