float 单精度浮点数占用32bit空间,不像存储整型或char型数据那么便捷,我们在存储float数据时就需要先将float数变换一下,变换成数组的格式,这样就方便存储和读取了,具体实现有以下方法:
第一种存储方式(取地址法):
uint8_t datatmp[4]; //定义数组 因为float数据 占4个字节
float s; //这是要存储的浮点数
uint8_t *p; //定义一个u8指针变量
p=(uint8_t*)&s; //取浮点数的地址
memcpy(datatmp,p,4); //拷贝浮点数地址4个字节到数组
这种方式就是用取地址的方式,然后又知道浮点数占用的空间,这样就可以通过拷贝即可将浮点数转移到数组中。
第二种存储方式(利用共用体):
union
{
float x;
uchar s[4];
}F32_Sep;
然后把a的值赋给F32_Sep.x,这样一来其实s[0]对应了浮点数的最高位,s[3]对应其最低位,因此,保存到EEPROM中只需将s[0]~s[3]即可。
这就是利用了共用体共用一段内存的原理,即 float x 和 uchar s[4],使用的是一个空间大小的内存。
本文介绍了两种将浮点数转换为数组以便于存储的方法:取地址法和利用共用体。取地址法通过直接拷贝浮点数的内存地址到数组实现;共用体方法则是利用同一段内存被不同数据类型共享的特性。
3143

被折叠的 条评论
为什么被折叠?



