我有一个modbus设备,它以IEEE754格式保存32位浮点值。在arduino中,当然使用C语言,我可以检索那些被分成两个16位值的值,这两个值以uint16_t值的形式返回。( modbus设备中的每个寄存器都有16位,所以值被分到两个寄存器中,但我使用的库返回uint16_t)。
我现在正在尝试将这两个uint16_t转换为1 32位浮点数,我想得到一些帮助,因为我被困在如何将其转换为这种类型的值上。
提前感谢您的帮助。
编辑:
为了清楚起见,这里有一个格式图像
发布于 2020-01-14 17:00:10
避免strict aliasing或无效类型双关语的唯一方法是真正使用std::memcpy
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);
https://stackoverflow.com/questions/59729914
复制相似问题