java - 将序列化的 Java Double 转换为等效的 VC++ 类型

标签 java c++ visual-c++ serialization binary

我正在使用 x86 VC++(项目规范强加的约束)反序列化二进制 Java 数据流,并且在正确解析序列化 double 值时遇到了麻烦。

假设:

  • Java double 最好用 VC++ x86 long double 表示。

我尝试过的:

  • 直接反序列化和字节交换反序列化。都不返回正确的值。 (一旦将整数从大端字节序转换为小端字节序,就能够很好地反序列化整数。)
  • Java 序列化文档没有帮助。

我害怕的是:

  • 指数和尾数都以某种方式进行了字节交换。

在此先感谢您的帮助。

最佳答案

答案是它是一个简单的字节交换。但是,使用内置的 C++ _byteswap 函数执行隐式转换为无符号整数,这会破坏 double 中的数据。

使用 How to byteswap a double? 中的字节交换解决方案之一成功了。

关于java - 将序列化的 Java Double 转换为等效的 VC++ 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18538388/

相关文章:

Java - 表达式的非法开始

c++ - 有据可查、开源且快速的 C/C++ 图像处理库。比如 'resize' ,旋转,变色,裁剪

c++ - 如何调试 Visual C++ 9 中的缓冲区溢出?

java - 如何在第三种方法中将两种不同方法返回的值相乘?

java - Spring - 并发任务

c# - 使用 BinaryReader 在 C# 中读取序列化的 C++ 结构

C++ 处理 'struct' 和字符串

c++ - 如何部分禁用 C4244

.net - '系统::字符串 ^' to ' LPCWSTR'

java - 如何从 jmx-console 关闭 JBOSS