6

好的,所以我正在查找在 java 中从字节数组转换为其数值的最佳方法是什么,我遇到了这个链接。第二个答案提到了 ByteBuffer 类的使用。对于那些不想点击链接的人,最初的问题是问我是否有:

byte[] by = new byte[8];

如何将其转换为 int?嗯,答案是……

ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();

System.out.println(l);

结果

4

这真是太棒了,但我只是想在走这条路之前确认一些事情。

假设我以前读取了一个 8 字节长的字节数组。

byte[] oldByte = new byte[8];

那我就...

ByteBuffer bb = ByteBuffer.wrap(new byte[] {oldByte[2], oldByte[3]});
int intValue = bb.getInt();

会以与前一个示例相同的方式工作/阅读吗?

4

1 回答 1

8

该类的文档指定ByteBuffergetInt()方法读取接下来的四个字节,因此如果您只将两个字节传递给对 的调用wrap,您将获得 BufferUnderflowException

抛出: BufferUnderflowException - 如果此缓冲区中剩余的字节少于四个

于 2013-07-03T18:55:11.873 回答