c++ - 将 4 个原始字节转换为 32 位 float

标签 c++ c floating-point floating-point-conversion

我正在尝试从 eeprom 重新构造 32 位浮点值。

eeprom 内存中的 4 个字节 (0-4) 是:B4 A2 91 4D

PC(VS Studio)将其正确重建为 3.054199 * 10^8(我知道应该在那里的浮点值)

现在我正在移动这个eeprom以从8位Arduino读取,所以不确定它是否是编译器/平台的东西,但是当我尝试将4个字节读取到32位双字中,然后将其类型转换为一个 float ,我得到的值还差得远。

假设标准 ansi-c 编译器无法自动完成转换,那么如何手动将 4 个字节解析为 float ?

最佳答案

最安全的方法是使用 memcpy:

uint32_t dword = 0x4D91A2B4;
float f;
memcpy(&f, &dw, 4);

演示:http://ideone.com/riDfFw

关于c++ - 将 4 个原始字节转换为 32 位 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57019886/

相关文章:

c++ - 比较 float 的相等计算输出

c++ - 高效稳定的有序数之和

Java:字节到 float /整数

c++ - 如何从 C++ 源文件生成 UML 类图?

c++ - OpenCV 中是否有用于 Delaunay 三角剖分的 C++ API?

c - 将 C 程序翻译成其他编程语言

c - 使用 GMenu 的菜单中的大间隙

c - 使用 eclipse 从 C 开始

c++ - 针对 0 的变量的隐式测试真的被认为是最佳实践吗?为什么?

c++ - 为什么我们将对象而不是对象成员传递给函数?