一個float變數是由4bytes所組成,我們直接更改bytes內的值嗎? |
尚未結案
|
kokalin
一般會員 發表:13 回覆:19 積分:6 註冊:2004-07-29 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: 一般我們指定浮點數都是直接宣告為float或double形式 而浮點數的格式都是遵照IEEE745標準 也就是一個float變數是由4個bytes所組成 而這4個bytes(32bits)配置也各有其定義 請問有方法能夠直接指定這32bits來組成一個浮點數值嗎? PS.會想這麼做是因為我會從8051藉由RS232傳值給PC 而我要利用這傳來的值組成一個浮點數 因此才會想詢問有沒有能夠直接指定浮點數配置記憶體的方法雖然我沒做過這樣的東西, 不過你可以把float拆為4個bytes, 在依需求做處理 void __fastcall TForm1::Button1Click(TObject *Sender) { float f = 10; BYTE* pByte = (BYTE*)&f; ShowMessage("修改前:" FloatToStr(f)); pByte[0] = 10; ShowMessage("第1個byte:0x" IntToHex(pByte[0], 2)); ShowMessage("第2個byte:0x" IntToHex(pByte[1], 2)); ShowMessage("第3個byte:0x" IntToHex(pByte[2], 2)); ShowMessage("第4個byte:0x" IntToHex(pByte[3], 2)); ShowMessage("修改後" FloatToStr(f)); } |
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
試試看 union 下面的例子參考看看,不過…直接改byte 得出來的值似乎很難理解
< class="code">#include
|
鈴鐺
初階會員 發表:33 回覆:81 積分:35 註冊:2002-03-13 發送簡訊給我 |
|
kokalin
一般會員 發表:13 回覆:19 積分:6 註冊:2004-07-29 發送簡訊給我 |
|
laputa1224
一般會員 發表:0 回覆:2 積分:0 註冊:2005-01-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |