如何把一个float存到一个长度为4的char数组中?
生活随笔
收集整理的這篇文章主要介紹了
如何把一个float存到一个长度为4的char数组中?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我以前以為它是可以這樣的
看代碼
輸出
123.000000-------------------------------- Process?exited?after?0.02558?seconds?with?return?value?0 請按任意鍵繼續.?.?.問題
后面的浮點數據被丟失了,丟失的原因應該很容易理解,就是浮點型轉換成char存儲,小數點后面的東西自然被丟棄了。
所以,我們就存在一個問題,怎么把一個浮點型賦值給 4個char,并且數不丟失呢?
用地址用指針
#include?"stdio.h"int?main(void) {float?fa?=?123.56;char?farray[4]?=?{0};*(float*)farray?=?fa;printf("%f\n",*(float*)farray);return?(0); }輸出
123.559998-------------------------------- Process?exited?after?0.02837?seconds?with?return?value?0 請按任意鍵繼續.?.?.用共用體
共用體這個是個好東西呀,我們在寫單片機的時候,經常有關聯性的,就用到這個,修改一個bit,然后里面的整型也跟著修改了。
看代碼
#include?"stdio.h"union?{float?fa;char?farray[4]; }utemp;int?main(void) {int?i?=?0;float?ft?=?0.0;utemp.fa?=?(float)123.56;ft?=?*(float*)utemp.farray;printf("%f\n",ft);return?(0); }輸出
123.559998-------------------------------- Process?exited?after?0.02835?seconds?with?return?value?0 請按任意鍵繼續.?.?.使用memcpy
內存復制和指針的做法應該是一樣的思路,既然說到了,還是把它寫出來。
看代碼
看輸出
45.230000-------------------------------- Process?exited?after?0.07221?seconds?with?return?value?0 請按任意鍵繼續.?.?.推薦閱讀:
專輯|Linux文章匯總
專輯|程序人生
專輯|C語言
嵌入式Linux
微信掃描二維碼,關注我的公眾號
總結
以上是生活随笔為你收集整理的如何把一个float存到一个长度为4的char数组中?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写给准备参加秋招的学弟学妹们~一定要来看
- 下一篇: 如何解决Binder泄漏问题