如何从两个字节组装一个浮点数?

时间:2017-05-20 09:38:21

标签: c++ c arduino

我目前正在开展一个需要读出DHT11 humidity and temperature sensor的项目。 MCU和串行设备之间的通信非常低级,但我设法接收测量值(湿度+温度)作为长度为4的字节数组(第5个字节是校验和):

我从DHT11传感器收到的值:

- byte[0] = humidity integer part
- byte[1] = humidity decimal part
- byte[2] = temperature integer part
- byte[3] = temperature decimal part
- byte[4] = checksum of the first four bytes

我现在想byte[0]byte[1]转换为浮点数,温度相同(byte [2]和byte [3])。在C / C ++的Arduino Mega 2560上实现这一目的的有效方法是什么?

示例:

byte[0] = 20 and byte[1] = 12 => 20.12 [float]

1 个答案:

答案 0 :(得分:5)

不幸的是,链接数据表中提供的两个示例都为小数部分发送了零。但是,从描述中可以看出,来自高位字节的数据可以添加到低位字节的数据除以256(数据的小数部分中的状态数):

const float scale = 256.0;
float humidity = byte[0] + (byte[1] / scale);
float temperature = byte[2] + (byte[3] / scale);