`
SwineX
  • 浏览: 36250 次
  • 性别: Icon_minigender_1
  • 来自: 常德
社区版块
存档分类
最新评论

VC中float与DWORD的互换

c++ 
阅读更多
引子:在看《龙书》的时候有个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等等。这样的转换可以保证二进制数据不丢失,从而保证数据的完整性。
分享到:
评论

相关推荐

    vc中float与DWORD的互想转换实现代码

    引子:在看《龙书》的时候有个float到DWORD的转换函数不理解。 DWORD d3d::FtoDw(float f) { return *((DWORD*)&f); } 背景: 有些函数需要传入DWORD类型的变量,但是该变量的实际意义是用小数来表示的。这里就...

    VC函数解释说明:BYTE与WORD,DWORD

    ### VC函数解释说明:BYTE与WORD,DWORD #### 基础概念介绍 在计算机编程领域,特别是针对Windows平台下的应用程序开发,理解基础数据类型及其使用是非常重要的。本文将详细介绍`BYTE`、`WORD`以及`DWORD`这三种...

    float型数据在内存中与HEX数据互相转换的代码

    在编程领域,尤其是在C++中,理解数据类型如`float`如何在内存中表示以及如何进行不同格式(如十六进制HEX)之间的转换是非常重要的。`float`型数据是用于存储浮点数的标准数据类型,它在内存中遵循特定的格式,即...

    4BYTE转换成float型代码

    在C++或Visual C++(vc)环境中,这通常涉及到低级别内存操作和类型转换。以下是转换过程中涉及的关键知识点: 1. **字节序**:4字节的数据可能是大端序(Big-Endian)或小端序(Little-Endian)。大端序中,最高...

    vc6.0的扩展文件 part2

    经过对比,发现vc98/include/中的basetsd.h中没有DWORD_PTR的定义,但扩展的文件中的basetsd.h中却有定义,所以使用本文件把vc98/下的include和lib两个目录覆盖掉即可解决这些编译问题 由于无法上传大于10M的文件,...

    易语言vc6linker_VC7_VC8_VC9_VC2010_连接器

    在易语言中,链接器的版本与Microsoft Visual C++(VC)的版本相对应,这是因为易语言的部分底层实现依赖于VC的编译环境。例如,VC6Linker对应的是Microsoft Visual C++ 6.0时期的链接器,而VC2010Linker则是对应...

    vc各种数据类型相互转换源码

    vc各种数据类型相互转换 包括基本数据类型与CString类型的相互转换 TCHAR和CString的相互转换 TCHAR与BSTR的相互转换 BSTR与CString的相互转换 DWORD与WORD的相互转换 WORD与BYTE的相互转换 COLORREF与RGB分量的相互...

    vc9、vc11、vc14 32位运行库

    在本篇文章中,我们将深入探讨VC9、VC11和VC14这三种不同版本的32位运行库,以及它们在安装和使用PHPStudy等软件时的重要性。 **1. VC9 (Visual C++ 2008)** VC9是微软的Visual Studio 2008编译器生成的运行库,它...

    VC中如何实现窗口的隐藏

    VC 中如何实现窗口的隐藏 在 VC 中实现窗口的隐藏是一个常见的需求,特别是在开发桌面应用程序时。隐藏窗口可以使程序在后台运行,不会干扰用户的其他操作。下面讨论如何在 VC 中实现窗口的隐藏。 一、使用 ...

    vc9 vc11 vc14运行库

    在描述中提到的"phpstudy运行需要他的支持",这表明PHPStudy集成环境中可能包含了一些使用VC9, VC11, 或 VC14 编译的组件或扩展,因此需要这些运行库才能正常工作。PHPStudy是一个集成的PHP开发环境,它集成了Apache...

    VC中IP地址控件的赋值与取值

    总结以上,VC中IP地址控件的赋值与取值主要依赖于Windows API中提供的相关函数,通过正确的函数调用和数据格式转换,可以有效地实现这一功能。在实际编程中,需要注意数据类型的转换,以及网络字节顺序与主机字节...

    VC中实现定制Excel输出

    VC中实现定制Excel输出,可以合并单元格,设置单元格格式,字体等,可以执行模板中的宏,输出符合的报表图。

    解决win7 64位 vc6.0中文显示乱码问题

    右键点击VC6.0的启动图标,选择“属性”,在“兼容性”选项卡中勾选“以兼容模式运行这个程序”,并选择与VC6.0开发时期相匹配的操作系统版本,比如Windows XP Service Pack 3。 通过以上步骤,大部分情况下都可以...

    VC中format用法

    在 CString 的 Format 函数中,第一个参数是格式化字符串,后面的参数是与格式化字符串中每个字段对应的类型变量。 格式化字符串中可以使用多种格式符,如 %d 表示 int,%s 表示 char*,%u 表示 unsigned int,%hd ...

    在工作中对VC工作笔记

    【标题】"在工作中对VC工作笔记"涵盖了在使用Visual C++(简称VC)进行软件开发过程中的实践经验与总结。这份笔记可能包含了作者在实际项目中遇到的问题、解决方法以及对于VC工具和库的深入理解。 【描述】"一些...

    VC中 使用VBA脚本

    这个脚本可能涵盖了如何在VC环境中启动和执行VBA、如何与C++代码交互、如何创建和响应用户事件等方面的知识。通过查看和分析这个文件,你可以学习到如何将VBA脚本集成到VC项目中,并理解其实际应用场景。 例如,...

    VC中的一些常用方法

    根据提供的文件信息,我们可以归纳出...以上知识点涵盖了VC中的一些常用操作,包括控制CD-ROM、获取操作系统信息、枚举字体、启动电子邮件和网址以及从可执行文件中提取图标等。这些功能在开发桌面应用程序时非常实用。

Global site tag (gtag.js) - Google Analytics