Android-Java 的二进制写入从 UE4-C++ 读取错误

Binary writing from Android-Java reading wrong from UE4-C++

我正在编写一个二进制文件 reader,它需要读取由 Android 平板电脑编写的一组非常具体的二进制文件。我在阅读这个二进制文件时遇到了几个问题运行,首先也是最重要的是它与我最初编写的数据不相似。我已经阅读了一些关于字节序、单词以及它们如何在不同系统上制作的内容,我很好奇这是否是问题的根源。 在这一点上任何信息都会很好,但我想知道的具体事情是:考虑到下面的几行,为什么二进制文件没有被读入与写出相同的值?我该如何解决这个问题?

假设 numPoints = 5000。

(输出函数 - Android-java)
out.writeInt(numPoints);
(功能中 - UE4-c++)
reader << numPoints;

numPoints 现在等于一些我无法解释的非常非常大的数字。

我正在使用 Windows 8.1 x64 和 Google-Project-Tango 平板电脑。

您的 C++ 代码可能正在以小尾数法读取数字。 Java(至少是 DataOutputStream)将二进制数写入大端。

在 Java 端解决这个问题可能更简单,因为它有一个内置函数:

out.writeInt(Integer.reverseBytes(numPoints));

您还应该检查 UE4 是否保证二进制文件是小端,或者它是否是机器的本机字节序 - 否则您可能希望将游戏移植到大端平台并且 运行 稍后遇到问题。