最近一個項目,需要在EEPROM中保存浮點數,於是想到浮點數佔四個字節,直接移位,發現得到的char型是0,看來這個方法不可行。搜索論壇,高人提議用聯合體來解決,聯合體看似與結構體相似,其不同之處在於結構體中每個變量佔用不同的內存,而聯合體共用一段內存,這就給保存浮點數提供了極大的便利。
比如我要保存一個浮點數a,我定義一個聯合體
union
{
float x;
uchar s[4];
}F32_Sep;
然後把a的值賦給F32_Sep.x,這樣一來其實s[0]對應了浮點數的最高位,s[3]對應其最低位,因此,保存到EEPROM中只需將s[0]~s[3]即可。
轉自:http://blog.sina.com.cn/s/blog_4a3946360100zp2j.html