调用 bytebuffer 的 getint() 方法可以直接从缓冲区当前位置读取一个 32 位整数,并将位置指针向后移动 4 个字节。该方法默认遵循大端序(big-endian)进行字节解析,如果缓冲区剩余空间不足 4 个字节会抛出 bufferunderflowexception。要获取数据,需确保缓冲区已写入数据且位置指针处于正确起始点。

如何指定读取时的字节序
通过 order(ByteOrder) 方法可以改变 getInt() 的解析规则,支持小端序(Little-Endian)。设置后,后续所有读取操作都会按照新顺序处理字节,直到再次修改为止。

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class Main {
public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(8);
buffer.putInt(0x01020304);
buffer.putInt(0x05060708);
// 默认大端序
System.out.println(buffer.getInt());
// 切换为小端序
buffer.order(ByteOrder.LITTLE_ENDIAN);
System.out.println(buffer.getInt());
}
}
读取前必须检查缓冲区状态吗
是的,必须在读取前确认 remaining() >= 4,否则 getInt() 会直接抛出异常。可以通过 hasRemaining() 或 remaining() 方法安全地判断当前可读取的字节数,避免程序崩溃。

import java.nio.ByteBuffer;
public class Main {
public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.putInt(12345);
if (buffer.remaining() >= 4) {
int value = buffer.getInt();
System.out.println(value);
} else {
System.out.println("数据不足");
}
}
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











