uint32 转 float 示例
生活随笔
收集整理的這篇文章主要介紹了
uint32 转 float 示例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/** 將符合IEEE754協(xié)議的uint32 轉 float 示例
* @brief 將32位無符號整數(shù)轉為有符號的符點數(shù)
* @param value1:無符號短整形 address_1: 16903 = 0x4207
* @param value2:無符號短整形 address_2: 02097 = 0x0831
* https://www.h-schmidt.net/FloatConverter/IEEE754.html
* https://blog.csdn.net/crjmail/article/details/79723051
* @return 返回帶符號的符點數(shù) 33.758 = 0x42070831 = 1107757105
*/
typedef union
{float float_value;uint8_t uint8[4];
}packet_uint32_to_float;
float uint32_to_float(uint16_t value1, uint16_t value2)
{packet_uint32_to_float packet;uint8_t buf[4]; memset(buf,0x00,sizeof(buf));buf[0] = (uint8_t)((value1 >> 8) & 0xFF);buf[1] = (uint8_t)((value1) & 0xFF);buf[2] = (uint8_t)((value2 >> 8) & 0xFF);buf[3] = (uint8_t)((value2) & 0xFF);uint32_t uint32 = ((buf[0]<<24) & 0XFFFFFFFF) + ((buf[1]<<16) & 0XFFFFFF) + ((buf[2]<<8) & 0XFFFF) + buf[3];for(uint8_t i = 0; i < 4; i++){packet.uint8[i] = (uint8_t)(uint32>>(i*8));}print("modbus_uint32_to_float uint32=%d, value1=%d; value2=%d; float_value = %f;",uint32,value1,value2,packet.float_value);return packet.float_value;
}
總結
以上是生活随笔為你收集整理的uint32 转 float 示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Val编程-特殊函数使用
- 下一篇: [UE4]更新UI的三种方式