[C语言] IIC存入float型数据求教

[复制链接]
2446|7
 楼主| 留声而过 发表于 2014-6-24 21:52 | 显示全部楼层 |阅读模式
提示: 该帖被管理员或版主屏蔽
ayb_ice 发表于 2014-6-25 07:58 | 显示全部楼层
存4个字节就可以了

用强制指针转换

float f;

1: ((char*)&f)[0]
2: ((char*)&f)[1]
3...
4...
按顺序还原即可

评分

参与人数 1威望 +1 收起 理由
留声而过 + 1 很给力!

查看全部评分

Jack315 发表于 2014-6-25 08:05 | 显示全部楼层
假设float数据是用24位表示的,则可定义一个联合:

  1. union
  2. {
  3.     float f24_var;
  4.     uint24_t u24_var;
  5. } Data;
运算时,用 Data.f24_var;存EEPROM时,用 Data.u24_var。
ningling_21 发表于 2014-6-25 09:23 | 显示全部楼层
union f_to_char
{
    float f_var;
    uchar uc_var[4];
} ;

用浮点数运算,把字符型保存到EEPROM
rtgchym 发表于 2014-6-25 10:12 | 显示全部楼层
楼上的方法可行,还有一种比较简单的办法就是根据你的精度,乘以一个100或1000,转换成整形然后存储,读取的时候再还原回去
 楼主| 留声而过 发表于 2014-6-25 20:18 | 显示全部楼层
ningling_21 发表于 2014-6-25 09:23
union f_to_char
{
    float f_var;

可以在详细一点吗?
ningling_21 发表于 2014-6-25 20:44 | 显示全部楼层
留声而过 发表于 2014-6-25 20:18
可以在详细一点吗?

union f_to_char
{
        float f_val;
        uchar char_val[4];
};

union f_to_char fchar1;

fchar1.f_val = 220.25;

save_eep(fchar1.char_val[0]);
save_eep(fchar1.char_val[1]);
save_eep(fchar1.char_val[2]);
save_eep(fchar1.char_val[3]);


评分

参与人数 1威望 +4 收起 理由
原野之狼 + 4 赞一个!

查看全部评分

原野之狼 发表于 2014-6-26 02:28 | 显示全部楼层
ningling_21 发表于 2014-6-25 20:44
union f_to_char
{
        float f_val;

赞!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

52

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部