c语言dword转float,vc中float与DWORD的互想转换实现代码
引子:在看《龙书》的时候有个float到DWORD的转换函数不理解。
DWORD d3d::FtoDw(float f)
{
return *((DWORD*)&f);
}
背景: 有些函数需要传入DWORD类型的变量,但是该变量的实际意义是用小数来表示的。这里就需要在不改变float本身值的情况下传入一个DWORD变量。
一段网上的代码
DWORD dw = 0;
float f1 = 0.25;
cout<
dw = *((DWORD*)&f1);
cout<
f1 = 0.0;
cout<
f1 = *((float*)&dw);
cout<
运行结果是
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
c语言dword转float,vc中float与DWORD的互想转换实现代码相关推荐
- c 语言字体怎么改,VC++中的字体设置方法详解
VC++中static text字体改变 窗口都有2个和字体有关的函数:CWnd::GetFont()和SetFont(CFont*, BOOL); 1)CFont* pFont = m_static ...
- float python_Python中float('INF')的使用
最近在看动态规划的时候遇到了res = float('INF'),不知道是什么意思,为什么要这么使用,经过查阅,现将用法记录如下. def coinChange(coins: List[int], a ...
- vc中GB2312,BIG5,Unicode编码转换
本文主要讨论的是VC编译环境下,实现字符串和文件编码方式转换的实现,linux下请使用Strconv. 一.文件编码格式转换 //GB2312 编码文件转换成 Unicode: if((file_ha ...
- C# 中关于汉字与16进制转换的代码
/// <summary> /// 从汉字转换到16进制 /// </summary> /// <param name="s" ...
- c语言如何float转换到uint,float转为int sql中float怎样转成int
C语言中float型转换成int型是什么规则 float型前24位是小数部分,后8位是指数部分.整型是16位,那是怎么转换C语言整型使用原码.反码.补码进行编码,而浮点型使用IEEE754进行编码,所 ...
- vc 中C 语言命名规范(转)
一.程序风格: 1.严格采用阶梯层次组织程序代码: 各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行.要求相匹配的大括号在同一列,对继行则要求再缩 ...
- mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区
关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...
- java float是_java中float是什么意思
Java中float的意思"浮动",代表的是一种浮点数数据类型,它内存分配4个字节,占32位,范围从"10^-38"到"10^38"和&qu ...
- Python使用pandas设置数据列中float数据类型的有效小数位数、抑制科学计数法
Python使用pandas设置数据列中float数据类型的有效小数位数.抑制科学计数法 目录
最新文章
- 送你38个常用的Python库,数值计算、可视化、机器学习等8大领域都有了
- Linux下自带的regex
- 钢铁侠机器人公仔_这个618,买个钢铁侠机器人和儿子一起回童年
- iOS之路9-#import 与#include和 @class的区别
- 机器学习中向量化编程总结记录
- C++学习之路 | PTA乙级—— 1093 字符串A+B (20 分)(精简)
- NameNode之文件系统目录树
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第1章 机器学习概览
- [Oracle] 别被View 整伤了
- MySQL中根据A表画更新B表
- 跨平台即时通讯解决方案
- 架构设计的新思路,《架构之道》读书笔记
- 根据数据库中提供的坐标(经纬度) 在前端地图上标示坐标点、并显示
- Illegal invocation 解决方法
- 关于视频后期美白的一些事
- 什么手势使用电子计算机比较快,手势功能
- 联想拯救者r7000p安装Linux双系统(二)
- 华为云服务器型号解析——通用计算型
- 不容错过, Paintinglite轻量级Sqlite3框架
- 常见的计算机专业的复合命题例子,第五章、复合命题.ppt