0

我正在从二进制 xml 中读取一些浮点数,并将它们分解为一个包含 4 个浮点数的结构(准确地说是 32 位浮点数)。所有值都可以正确读取,但那些为-1 的值除外。

这是与字节序相关的问题吗?

-1如果转换为0并且所有其他值都正确反序列化,我应该寻找什么?(我的意思是,是否有一个明显的、常见的错误或我应该考虑的错误来源?)。我无权访问执行此操作的库,也无法向您提供任何详细信息,因为它是机密的。

在这个问题真正结束之前,我想发布一个小提示(由于 NDA 条件苛刻,没有代码):

  • 我正在使用的库将一些二进制数据从 xml 转换为其特定类型
  • 它以一种非常丑陋的方式做到这一点:

    值 = (T )srcBuffer;

    交换字节(值);

  • -1因此直接读取并假定为 BigEndian 格式。不幸的是,在 BigEndian 格式中,-1数量somethingE-47确实是一个非常小的数字。汇编指令执行一些量化并将其舍入为零。因此,对于这种奇怪的情况,不可告人的SwapByte指令将获得错误的数据并失败。这是一个与 IBM/PowerPC 处理器相关的架构问题。

memcpy更好地工作并避免丑陋的量化伪影吗?我不能在转换之前进行交换字节,因为我肯定会恶化其他部分。

4

0 回答 0