您不必这样做,您可以使用ByteBuffer
:
int i = ByteBuffer.wrap(rdbuf).order(ByteOrder.LITTLE_ENDIAN).getInt();
如果您有许多整数要阅读,则代码变为:
ByteBuffer buf = ByteBuffer.wrap(rdbuf).order(ByteOrder.LITTLE_ENDIAN);
while (buf.remaining() >= 4) // at least four bytes
i = bb.getInt();
Javadoc在这里。推荐用于必须处理二进制数据的任何情况(无论您是读取还是写入此类数据)。可以进行小端、大端甚至本地排序。(注意:默认为大端)。
(编辑:@PeterLawrey 正确地提到这看起来像小端数据,固定代码提取 - 另外,请参阅他的答案,了解如何将文件的内容直接包装到 a 中ByteBuffer
)
笔记:
ByteOrder
有一个名为 的静态方法.nativeOrder()
,它返回底层架构使用的字节顺序;
- a
ByteBuffer
有一个内置的偏移量;可以使用 查询当前偏移量.position()
,并使用 修改当前偏移量.position(int)
;.remaining()
将返回从当前偏移量到结束要读取的剩余字节数;
- 有相对方法将在缓冲区的当前偏移量处读取/写入,而绝对方法将在您指定的偏移量处读取/写入。