首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将2位uint16_t转换为32位浮点IEEE-754格式

将2位uint16_t转换为32位浮点IEEE-754格式
EN

Stack Overflow用户
提问于 2020-01-14 16:24:05
回答 1查看 912关注 0票数 1

我有一个modbus设备,它以IEEE754格式保存32位浮点值。在arduino中,当然使用C语言,我可以检索那些被分成两个16位值的值,这两个值以uint16_t值的形式返回。( modbus设备中的每个寄存器都有16位,所以值被分到两个寄存器中,但我使用的库返回uint16_t)。

我现在正在尝试将这两个uint16_t转换为1 32位浮点数,我想得到一些帮助,因为我被困在如何将其转换为这种类型的值上。

提前感谢您的帮助。

编辑:

为了清楚起见,这里有一个格式图像

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 17:00:10

避免strict aliasing或无效类型双关语的唯一方法是真正使用std::memcpy

代码语言:javascript
运行
复制
uint16_t const value[2] = { low_word, high_word };  // Assuming little-endianness
float f;

std::memcpy(reinterpret_cast<void*>(&f), reinterpret_cast<void const*>(value), sizeof f);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59729914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档