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

sal*_*inx 5 c c++ arduino

我目前正在开展一个需要读出DHT11湿度和温度传感器的项目.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
Run Code Online (Sandbox Code Playgroud)

我现在想转换byte[0]byte[1]对浮子和相同的温度(字节[2]和字节[3]).在C/C++的Arduino Mega 2560上实现这一目标的有效方法是什么?

例:

byte[0] = 20 and byte[1] = 12 => 20.12 [float]
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

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

const float scale = 256.0;
float humidity = byte[0] + (byte[1] / scale);
float temperature = byte[2] + (byte[3] / scale);
Run Code Online (Sandbox Code Playgroud)