将 int 转换从字节从 C++ 迁移到 Java

Migrate a int conversion from byte from C++ to Java

本文关键字:迁移 Java C++ 字节 int 转换      更新时间:2023-10-16

我有以下一段代码C++

int magic;
stream.read(&magic, sizeof(magic));

它存储来自字节数组的魔术值。

我想将其迁移到 Java,到目前为止我有这个:

int magic = stream[0];

但它不起作用。我认为这是由于 Java 和 C++ 中整数的长度。我应该在 Java 部分使用两个字节来检索正确的幻数吗?

byte[] stream = ...
ByteBuffer buf = ByteBuffer.wrap(stream);
buf.order(ByteOrder.LITTLE_ENDIAN);
int magic = buf.readInt();

请参阅字节缓冲区。Java int始终是 4 个字节的,默认情况下 java 使用 BIG_ENDIAN 字节顺序,因此您可能需要设置相反的顺序。