工作中遇到这些格式之间的转换,后面发现部分之间转换存在精度损失,故此记录;
1: 32位float想要转32uint
uint32 uint32_a = 0;
float32 float32_b = 314.5;
uint32_a = *(uint32 *)(&float32_b);//不能直接uint32_a = (float32)float32_b;
2: 情景是从寄存器上读到16位数据,存放在uint16数组中,用到接下来运算中要当作int16类型与float32位数进行运算,并得到float32位结果数据,此时疑惑该如何转换?uint16转int16?uint16转float32?是地址转还是强制转?
请教老师傅得到的解答是:可以直接强转为int16然后参与运算,后续和float32运算中会隐性转换为float32;也可以强转为float32直接参与运算,先采纳,后续慢慢吸收。