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

我目前正在开展一个项目,我需要读出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 

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

例:

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

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

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