16进制和浮点数互转,目前我会的知道的就两种方式,一种是联合体的方式,还有一种就是指针强制转换的方式。下面的是指针强制转换的C语言实现方式,如果接收的浮点数据是通过外部接收过来的,浮点的16进制数据的排列会跟硬件平台的大小端相关,需要调整排列顺序,再用指针转换。
//****输入单精度浮点数:3.141593 转成十六进制: 40 49 0F DA***//
uint8_t f_buf[4]={0};
float f_Value1=3.1415926; //浮点数1
float f_value2=0; //浮点数2
uint8_t *float_p;
void user_main(void)
{
float_p=(uint8_t *)&f_Value1; //指针指向浮点数1
f_buf[0]=*(float_p+0); //将浮点数的值转换为4字节数存入数组
f_buf[1]=*(float_p+1);
f_buf[2]=*(float_p+2);
f_buf[3]=*(float_p+3);
float_p=f_buf; //指针再指向数组
f_value2=*((float *)(float_p)); //将指针指向的数据转解为浮点数2
while(1)
{
}
}