【发布时间】:2014-10-11 01:50:08
【问题描述】:
我正在尝试从 eeprom 重新构造一个 32 位浮点值。
eeprom内存中的4个字节(0-4)是:B4 A2 91 4D
PC(VS Studio)将其正确重构为 3.054199 * 10^8(我知道的浮点值应该在那里)
现在我正在移动这个 eeprom 以从 8 位 Arduino 读取,所以不确定它是否是编译器/平台的东西,但是当我尝试将 4 个字节读入 32 位 dword,然后将其类型转换为一个浮点数,我得到的值甚至不接近。
假设使用标准的ansi-c编译器不能自动完成转换,如何手动将4个字节解析为浮点数?
【问题讨论】:
-
听起来像endianness issue 但没有代码我们无法确定。在我对该问题的回答中,我链接到一个转换器,因此您可以尝试翻转这些值,看看是否可以重复您看到的结果以确认。
-
我同意这可能是字节序。你在 Arduino 上得到大约 -3.0280572E-7 吗?
-
有趣的是,当第一个字节被视为 MSB 时,编译器(浮点)转换产生:3.03055283E9.. 但是我确实记得最初看到 -3.02E-7 但不知道为什么我不这样做不再。当第一个字节被视为 LSB 时,编译器将转换为:1.30138995E9。
-
Here是如何在PHP中将字节数组转换为浮点数。
标签: c++ c floating-point floating-point-conversion