vc中float與DWORD的互想轉(zhuǎn)換實(shí)現(xiàn)代碼
引子:在看《龍書》的時(shí)候有個(gè)float到DWORD的轉(zhuǎn)換函數(shù)不理解。
DWORD d3d::FtoDw(float f) { return *((DWORD*)&f); }
背景: 有些函數(shù)需要傳入DWORD類型的變量,但是該變量的實(shí)際意義是用小數(shù)來表示的。這里就需要在不改變float本身值的情況下傳入一個(gè)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
舉個(gè)例子,127 / 255 = 0.5,0.1 * 255 = 25
上一篇:數(shù)據(jù)結(jié)構(gòu) 棧的操作實(shí)例詳解
欄 目:C語言
下一篇:C語言數(shù)據(jù)結(jié)構(gòu)之棧簡單操作
本文標(biāo)題:vc中float與DWORD的互想轉(zhuǎn)換實(shí)現(xiàn)代碼
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1413.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)
- 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文