如何避免BufferUnderflowException

时间:2013-11-14 20:16:29

标签: java exception buffer

我正在使用此函数将bytearray转换为int。

public static int byteArrayToInt(byte[] b) {
    ByteBuffer bb = ByteBuffer.wrap(b);
    bb.order(ByteOrder.LITTLE_ENDIAN);
    return bb.getInt();
}

不幸的是我在return语句中遇到了java.nio.BufferUnderflowException。顺便说一下,我多次调用这个函数。我读到当读取的字节数多于缓冲区大小时会发生这种情况。但有谁能告诉我如何避免它?

有没有办法将原始bytearray复制到大小为4的新bytearray并将此bytearray传递给函数?

更新: 我在main方法中试过这个:

byte[] bbTemp=new byte[4];
bbTemp = originalbyteArray;

并将bbTemp传递给上述函数,但它不起作用。知道为什么吗?

1 个答案:

答案 0 :(得分:2)

BufferUnderflowException will be thrown

  

如果此缓冲区中剩余的字节少于四个

确保您的byte[]中至少包含4个字节,这是int的大小。