標題 [筆記] IEEE754 浮點數 轉換
時間 2012/03/19 Mon 00:18:57
───────────────────────────────────────
原文出處:
http://edisonx.pixnet.net/blog/post/83095843
Float → Hex
先以 float 為例,假設宣告是
float f;
unsigned u;
要將 f 之記憶體內容拉到 u 裡面去,觀念是,
(1) 先將 float 取位址值 ---> &f
(2) 將位址內容轉型成 unsigned* 指標 ---> (unsigned*)&f
(3) 將對 unsigned* 指標做取值(dereference) 動作 ---> *(unsigned*)&f
(4) 再設給 u 值 ---> u = *(unsigned*)&f
(5) 再顯示 u 之 16 進位 ---> printf("%8x\n", u);
u = *(unsigned*)&f;
Hex → Float
DWORD DW_Data;
float f = *(float*)&DW_Data;
PS.
1. 在轉換時會有誤差出現,需注意及特別處理
2. 負數部分我目前沒有試過
3. 上面的 (2) 我還是不懂這樣的做法,背後是怎麼運作的…0rz
--
▅◣ Origin: 謠 言 報 bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 219-84-254-78-adsl-kao.dynamic.so-net.net.tw 發表
沒有留言:
張貼留言