标题:
求大牛,float 存放到eeprom的方法。
[打印本页]
作者:
不再记起
时间:
2018-6-30 20:46
标题:
求大牛,float 存放到eeprom的方法。
如题, 请教下 float 的变量 如何放到eeprom里? 试过乘以倍数取整 好像这个办法行不通。 看到有说用
float x;
int x_h, x_l
x_h = *(int * )&x; //这个取floast前面两个字节
x_l = *(((int* )&x)+1); // 这个取后面两个字节存放. 这种办法 我怎么将高位 与低位 再组合回去呢?或有其它的办法吗?
作者:
不再记起
时间:
2018-6-30 22:40
求指点
作者:
angmall
时间:
2018-6-30 22:54
用c语言关键字union来解决。
union xxx
{
char c[4];
float f;
}y;
定义一个“共用体”xxx,y作为“共用体变量”,里面再定义一个char类型的变量数组c[4]和float类型的变量f。
根据union的定义,里面的变量占用同一个内存地址。所以,c[4]和f的内存地址是一样的,说的再通俗一点,就是c[4]的4个数实际上就是f的四个字节。
作者:
不再记起
时间:
2018-7-1 12:58
angmall 发表于 2018-6-30 22:54
用c语言关键字union来解决。
union xxx
您好。 char c[4]; 这个我是c[4],c[3],c[2].。。。。 这样一个一个存入是吗?
作者:
不再记起
时间:
2018-7-1 14:11
angmall 发表于 2018-6-30 22:54
用c语言关键字union来解决。
union xxx
如果存储的话 直接将 c[4] 。。 c[3]等 一位一位存入????
作者:
angmall
时间:
2018-7-1 16:03
如果存储的话 直接将 c[3] 。。 c[0]等 一位一位存入
union xxx
{
char c[4];
float f;
}y;
y.f= 1234.567;
eepromSave(y.c[3]);
eepromSave(y.c[2]);
eepromSave(y.c[1]);
eepromSave(y.c[0]);
作者:
cangcanglang
时间:
2018-7-2 09:22
float一般来说是32bit,但不同编译器不保证一样,如果你是一个环境那倒无所谓,一般来说数据传输或存储都要字节序列化,json是目前最常用的方法之一
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1