java - Java 和 C++ 相互对话时的问题

标签 java c++

我有一个 C++ 程序,它在磁盘上写入一个二进制文件。然后我使用 Java 程序读取数字。问题是读取的数字与写入的数字不同。

比如说,我用 C++ 写了一个整数 4,当用 JAVA 读取它时(使用 readint())得到了 67108864。我怀疑它是由于大端或小端。您有任何简单的解决方案来解决这个问题吗?

最佳答案

Java 的 java.nio 缓冲区允许您指定字节顺序。

参见 http://download.oracle.com/javase/6/docs/api/java/nio/ByteBuffer.html特别是 order允许您指定字节顺序和 getInt 的方法允许您读取 int 的方法。

要使用 ByteBuffer 读取文件,请执行以下操作:

ByteBuffer buffer = new RandomAccessFile(myFile, "r")
    .getChannel.map(MapMode.READ, offset, length);

记得在完成后关闭它。

关于java - Java 和 C++ 相互对话时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5345547/

相关文章:

java - 手动创建表单

c++ - 重载运算符 [] 并没有得到 "lvalue required as left operand of assignment"错误

C++ fwrite,错误代码 36 Broken Pipe

java - 以下代码的输出

java - 我可以使用普通的java类文件形式的web.xml文件读取上下文参数吗

java - 我的复选框的名称无法解析

c++ - 错误c2007 : #define syntax//invalid syntax at a comment block? [closed]

c++ - 析构函数导致堆损坏。

c++ - 是否可以在编译时评估数组?

java - 如何将二维数组转换为以值作为索引的一维数组?