【问题标题】:Migrate a int conversion from byte from C++ to Java将字节的 int 转换从 C++ 迁移到 Java
【发布时间】:2015-06-15 14:51:36
【问题描述】:

我有以下 C++ 代码

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

它存储字节数组中的魔法值。

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

int magic = stream[0];

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

【问题讨论】:

  • 您在这里尝试做的事情,在 java 中比在 C++ 中稍微复杂一些,请查看stackoverflow.com/a/7619111/3447831
  • Java 中的 int 是 32 位的,并且始终是 32 位的。 C++ 中的 int 不必是 32 位的。

标签: java c++ int bytearray


【解决方案1】:
byte[] stream = ...
ByteBuffer buf = ByteBuffer.wrap(stream);
buf.order(ByteOrder.LITTLE_ENDIAN);
int magic = buf.readInt();

ByteBuffer。 java int 总是有 4 个字节有符号,并且默认情况下 java 使用 BIG_ENDIAN 字节顺序,因此您可能需要设置相反的顺序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2011-04-08
    • 2012-03-23
    • 2016-04-22
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多