从Android Java读取二进制错误UE4-C++
Binary writing from Android-Java reading wrong from UE4-C++
我正在编写一个二进制阅读器,它需要读取安卓平板电脑编写的一组非常特定的二进制文件。我在阅读这个二进制文件时遇到了几个问题,首先也是最重要的是,它与我最初写的数据不相似。我读过一些关于endianness、words以及它们是如何在不同系统上生成的,我很好奇这是否是问题的根源。在这一点上,任何信息都是好的,但我想知道的具体情况是:考虑到下面的行,为什么二进制文件的读取值与写入值不同?我该怎么解决这个问题?
假设numPoints=5000。
(OUT FUNCTION-Android java)out.writeInt(numPoints);
(功能-UE4-c++)reader << numPoints;
numPoints现在等于一个我无法解释的非常大的数字。
我使用的是Windows 8.1 x64和谷歌项目探戈平板电脑。
您的C++代码可能正在读取小端序中的数字。Java(至少DataOutputStream)将二进制数写为big-endian。
在Java端修复这个问题可能更简单,因为它有一个内置函数:
out.writeInt(Integer.reverseBytes(numPoints));
你还应该检查UE4是否保证二进制文件是小端序,或者它是否是机器的原生端序——否则你可能想将游戏移植到大端序平台,然后遇到问题。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 安卓UE4错误缺少"SteamShared"的预编译清单
- UE4 数据表结构错误
- [UE4错误]无法编译项目.你想在Visual Studio中打开它吗?
- 在UE4(虚幻引擎4)中集成LuaJit时LNK2005错误
- 如何修复错误"在c ++ UE4中为类似函数的宏调用'TEXT的参数过多
- UE4包装错误:将问题与OpenSSL联系起来
- UE4中简单坐标变换的错误结果
- 从Android Java读取二进制错误UE4-C++
- UE4 -当宏插入定义时,错误C2535