TA的每日心情 | 开心 6 小时前 |
---|
签到天数: 341 天 [LV.8]以坛为家I
论坛元老
- 积分
- 4025
|
发表于 2023-10-1 19:20:54
|
显示全部楼层
在EEPROM中保存浮点数的方法
任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字节读出的。
要点是(以图像为例):如何编码的,就如何解码。
也即你缺少(XX格式,如浮点数)编码的知识,当然就不知道如何解码了。
保存一个16位数据,分两个字节写入即可,32位的数(长整形或浮点数)就要分4个字节写入。
浮点数(实数)长度32位,用位移的方式拆分成4个字节存入eeprom,读取后按存入时的拆分顺序还原。对于eeprom存储器单元而言,存入的只是一个字节的数据。与数据的类型无关。
用union联合体转换或指针操作。你这样移位可以直接用union联合体代替,不需要移位。
一般我会这样定义:
typedef union
{
float value1;
unsigned char value2[4];
} pValue;
存储的时候调用value2,其他时候用value1
pValue pVal;
pVal.value1 = 10.3;
IapProgram(0x0000,pVal.value2[0]);
IapProgram(0x0001,pVal.value2[1]);
IapProgram(0x0002,pVal.value2[2]);
IapProgram(0x0003,pVal.value2[3]);
|
|