找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2981|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

求大牛,float 存放到eeprom的方法。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:362432 發(fā)表于 2018-6-30 20:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如題, 請(qǐng)教下 float 的變量 如何放到eeprom里?  試過(guò)乘以倍數(shù)取整 好像這個(gè)辦法行不通。 看到有說(shuō)用 float x;
int x_h, x_l

x_h = *(int * )&x; //這個(gè)取floast前面兩個(gè)字節(jié)

x_l = *(((int* )&x)+1); // 這個(gè)取后面兩個(gè)字節(jié)存放.  這種辦法 我怎么將高位 與低位 再組合回去呢?或有其它的辦法嗎?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:362432 發(fā)表于 2018-6-30 22:40 來(lái)自觸屏版 | 只看該作者
求指點(diǎn)
回復(fù)

使用道具 舉報(bào)

板凳
ID:155507 發(fā)表于 2018-6-30 22:54 | 只看該作者
用c語(yǔ)言關(guān)鍵字union來(lái)解決。

union xxx
{
  char c[4];
  float f;
}y;

定義一個(gè)“共用體”xxx,y作為“共用體變量”,里面再定義一個(gè)char類(lèi)型的變量數(shù)組c[4]和float類(lèi)型的變量f。

根據(jù)union的定義,里面的變量占用同一個(gè)內(nèi)存地址。所以,c[4]和f的內(nèi)存地址是一樣的,說(shuō)的再通俗一點(diǎn),就是c[4]的4個(gè)數(shù)實(shí)際上就是f的四個(gè)字節(jié)。

回復(fù)

使用道具 舉報(bào)

地板
ID:362432 發(fā)表于 2018-7-1 12:58 | 只看該作者
angmall 發(fā)表于 2018-6-30 22:54
用c語(yǔ)言關(guān)鍵字union來(lái)解決。

union xxx

您好。 char c[4]; 這個(gè)我是c[4],c[3],c[2].。。。。 這樣一個(gè)一個(gè)存入是嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:362432 發(fā)表于 2018-7-1 14:11 | 只看該作者
angmall 發(fā)表于 2018-6-30 22:54
用c語(yǔ)言關(guān)鍵字union來(lái)解決。

union xxx

如果存儲(chǔ)的話 直接將 c[4]  。。 c[3]等 一位一位存入????
回復(fù)

使用道具 舉報(bào)

6#
ID:155507 發(fā)表于 2018-7-1 16:03 | 只看該作者
如果存儲(chǔ)的話 直接將 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]);


回復(fù)

使用道具 舉報(bào)

7#
ID:362857 發(fā)表于 2018-7-2 09:22 | 只看該作者
float一般來(lái)說(shuō)是32bit,但不同編譯器不保證一樣,如果你是一個(gè)環(huán)境那倒無(wú)所謂,一般來(lái)說(shuō)數(shù)據(jù)傳輸或存儲(chǔ)都要字節(jié)序列化,json是目前最常用的方法之一
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表