uint32_t calcu_electricity(uint8_t *start_addr)
{
uint32_t combined_value = ((start_addr[0]<<24)+(start_addr[1]<<16)+(start_addr[2]<<8)+start_addr[3]);
test_float = (float)combined_value;
float float_value = *((float *)&combined_value);
float_test = (uint32_t)test_float;
// 将 float 转换为 int
combined_value = (uint32_t)float_value;
if(float_test)
{
float_test = 0;
}
return combined_value;
}
如上图combined_value 是一个uint32类型的数据,如何表示float?
test_float = (float)combined_value;
float_test = (uint32_t)test_float;
强制类型转换?抱歉,这样打印出来的并不是U32
float float_value = *((float *)&combined_value);
combined_value = (uint32_t)float_value;
正确做法,采用指针的形式转换为float之后再强制转换为U32