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