引子:在看《龍書》的時候有個float到DWORD的轉換函數不理解。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網頁空間、營銷軟件、網站建設、珙縣網站維護、網站推廣。
DWORD d3d::FtoDw(float f) { return *((DWORD*)&f); }
背景: 有些函數需要傳入DWORD類型的變量,但是該變量的實際意義是用小數來表示的。這里就需要在不改變float本身值的情況下傳入一個DWORD變量。
一段網上的代碼
DWORD dw = 0; float f1 = 0.25; cout<<"f1 = "<<f1<<endl; dw = *((DWORD*)&f1); cout<<"dw = *((DWORD*)&f1): "<<dw<<endl; f1 = 0.0; cout<<"f1 = 0.0: "<<f1<<endl; f1 = *((float*)&dw); cout<<"f1 = *((float*)&dw): "<<f1<<endl;
運行結果是
f1 = 0.25 dw = *((DWORD*)&f1): 1048576000 f1 = 0.0: 0 f1 = *((float*)&dw): 0.25
這里利用的是編譯器轉型的手段,對于任何字節對等的類型都適用,比如float到int,double到long等等。這樣的轉換可以保證二進制數據不丟失,從而保證數據的完整性。
顏色轉換,float <->DWORD
在DirectX程序中有些地方用DWORD(RGBA)格式表示顏色,其范圍是[0 - 255],在shader中則都以float來表示顏色,其范圍是[0.0 - 1.0],兩者間的轉換規則如下:
DWORD -> float 將DWORD除以255
float -> DWORD 將float值乘以255
舉個例子,127 / 255 = 0.5,0.1 * 255 = 25
當前名稱:vc中float與DWORD的互想轉換實現代碼
網頁URL:http://m.newbst.com/article40/gpjjeo.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、服務器托管、網站設計、App開發、外貿建站、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯