刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。
我们先定义一些常见类型变量借以说明
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="女侠程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
一、其它数据类型转换为字符串
短整型(int)
itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制
itoa(i,temp,2); ///按二进制方式转换
长整型(long)
ltoa(l,temp,10);
二、从其它包含字符串的变量中获取指向该字符串的指针
CString变量
str = "2008北京奥运";
buf = (LPSTR)(LPCTSTR)str;
BSTR类型的_variant_t变量
v1 = (_bstr_t)"程序员";
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);
三、字符串转换为其它数据类型
strcpy(temp,"123");
短整型(int)
i = atoi(temp);
长整型(long)
l = atol(temp);
浮点(double)
d = atof(temp);
四、其它数据类型转换到CString
使用CString的成员函数Format来转换,例如:
整数(int)
str.Format("%d",i);
浮点数(float)
str.Format("%f",i);
字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值
str = username;
五、BSTR、_bstr_t与CComBSTR
CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。
char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR
("数据");///使用前需要加上头文件comutil.h
反之可以使用char *p=_com_util::ConvertBSTRToString(b);
六、VARIANT 、_variant_t 与 COleVariant
VARIANT的结构可以参考头文件VC98/Include/OAIDL.H中关
于结构体tagVARIANT的定义。
对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,
再对联合结构中相同数据类型的变量赋值,举个例子:
VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值
对于不马上赋值的VARIANT,最好先用
Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质
是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:
unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF
_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,
其构造函数会自动处理这些数据类型。
例如:
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;
COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:
COleVariant v3 = "字符串", v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;
七、其它
对消息的处理中我们经常需要将WPARAM或LPARAM
等32位数据(DWORD)分解成两个16位数据(WORD),例如:
LPARAM lParam;
WORD lovalue = LOWORD(lParam);///取低16位
WORD hivalue = HIWORD(lParam);///取高16位
对于16位的数据(WORD)我们可以用同样的方法分解成
高低两个8位数据(BYTE),例如:
WORD wvalue;
BYTE lovalue = LOBYTE(wvalue);///取低8位
BYTE hivalue = HIBYTE(wvalue);///取高8位
相关推荐
02A-IDL语法基础:IDL简介、数据类型、常量、变量及数据转换1
第二章 数据分析工具:IDL编程课程要求和考核方式课程基础高等数学/线性代数/概率论与数理统计高级程序语言与程序设计( C )/Matlab 程序设计学习目的1
数据类型-转换-总结-介绍
在 C# 中,内置的类型转换方法主要通过以下几种方式实现:隐式转换、显式转换(强制转换)、使用 Convert 类的方法、Parse 方法和 TryParse 方法,这些方法广泛应用于不同数据类型之间的转换。方法类别方法描述隐式转换自动进行的转换无需显式指定,通常用于安全的类型转换,如从较小类型到较大类型显式转换(强制转换)需要显式指定,通常用于可能导致数据丢失或转换失败的情况Convert类方法将指定类型转换为BooleanParse方法将字符串解析为BooleanTryParse。
[WeChatMsg]导出csv格式微信聊天记录的手把手教程
手把手教大家如何导出自己的聊天记录得到csv文件,即使是电脑小白也可以轻松学会o(* ̄▽ ̄*)ブ
Java学习笔记3—变量的类型转换
目录 一、自动类型转换 思考1:以下的代码能不能通过编译 思考2:以下的代码能不能通过编译 二、强制类型转换 思考1:以下代码能不能通过编译 拓展:以下代码强转后,byte的值为多少 一、自动类型转换 废话不多说,直接举个例子吧 double a=1; System.out.println(a); 在这种情况下,给double型的a赋值一个int值的1,这种情况下是可以通过编译的,输出的结果是1.0,说明系统将int型的a=1自动转为了double型的a=1.0。 自动类型转换是
FreeSWITCH视频通话实战:关键配置文件解析与编解码优化
本文详细解析了FreeSWITCH视频通话实战中的关键配置,重点介绍了如何通过修改`conf/vars.xml`和`sip_profiles/internal.xml`文件来启用媒体代理、优化编解码器设置(如H.264和VP8),并解决常见的视频流协商与网络穿透问题,帮助用户快速实现稳定、高质量的视频通话功能。
ArcGIS通过已知坐标点转面(通过excel文件,有工具可批量生成面要素)
通过使用ArcGIS中的工具,将坐标点XY数据转换成可视化的点线面矢量数据,更加方便快捷有效的获取对应信息
变量的类型转换
变量的类型转换 在程序中,当把一种数据类型的值赋给另一种数据类型的变量时,需要进行数据类型转换。根据转换方式的不同,数据类型转换可分为两种:自动类型转换和强制类型转换。 自动类型转换 自动类型转换也叫隐式类型转换,指的是两种数据类型在转换的过程中不需要显式地进行声明。要实现自动类型转换,必须同时满足两个条件, 第一个是两种数据类型彼此兼容。第二个是目标类型的取值范围大于源类型的取值
【技术解析】LUT-Fuse:如何通过可学习查找表与蒸馏技术,为边缘设备解锁实时图像融合
本文解析了ICCV 2025提出的LUT-Fuse技术,它通过可学习查找表与知识蒸馏,解决了边缘设备上图像融合的质量、速度与功耗“不可能三角”。该方法将复杂计算预编译为高速查找表,在Jetson等设备上实现100+ FPS的实时红外-可见光图像融合,为无人机、安防等应用提供了高效解决方案。
数据清洗第六章操作题
一、对文本文件进行数据粒度转换,即将文本文件personnel_data.txt中字段household_register的数据统一成省份,并且输出到文本文档personnel_data_new.txt中。 1.打开Kettle工具,新建转换使用Kettle工具,创建一个转换generalization,添加文本文件输入控件、表输入控件、字段选择控件、排序记录控件、记录集连接控件、表输出控件以及Hop跳连接线。 2.配置文本文件输入控件,双击“文本文件输入”控件,进入“文本文件输入”界面,单击【浏览】按钮,
第一章、isaacsim 及 isaaclab 安装教程
本专栏所有内容将根据上述资源地址展开,请结合食用~
【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通
本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。
Java学习笔记05——变量的类型转换(附一个强制转换实例)
Java中变量的类型转换分为自动转换和强制转换
基于DFT的滤波系列:加窗滤波的 Matlab 实现
在实际应用中,你可以尝试不同类型的窗函数(如汉宁窗、汉明窗等)以及不同的滤波参数来获得所需的滤波效果。此外,还可以进一步了解 DFT 和窗函数的原理,以及其他数字信号处理技术的应用。加窗滤波是一种常用的数字信号处理技术,它通过在频域上应用窗函数来改善信号的频谱特性。我们通过定义输入信号、应用窗函数、进行 DFT 和逆 DFT,实现了滤波过程,并通过绘图进行了可视化。在频域上进行加窗滤波的关键是将窗函数应用于 DFT 的结果。首先,我们需要定义一个输入信号,这里我们使用一个简单的正弦波作为示例。
数据类型自动转换和强制转换示例
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>测试Javascript</title></head> <body><form>...
VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程
VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
python数据类型转换教学_Python常见数据类型转换操作示例
本文实例讲述了Python常见数据类型转换操作。分享给大家供大家参考,具体如下:类型转换主要针对几种存储工具:list、tuple、dict、set特殊之处:dict是用来存储键值对的。1、list 转换为setl1 = [1, 2, 4, 5]s1 = set(l1)print(type(s1))print(s1)输出:{1, 2, 4, 5}2、set转换为lists1 = set([1, 2...
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
VC++ 15个数据类型转换的示例代码
如何给VARIANT类型赋值 { VARIANT var; CString strText = _T(""); //初始化VARIANT类型变量 VariantInit(&var); //给VARIANT类型变量赋值 var.vt = VT_I4; var.lVal = (long)100; strText.Format(_T("var = %d"), var.lVal);
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
python 数据类型转换教案_Python常见数据类型转换操作示例
本文实例讲述了Python常见数据类型转换操作。分享给大家供大家参考,具体如下:类型转换主要针对几种存储工具:list、tuple、dict、set特殊之处:dict是用来存储键值对的。1、list 转换为setl1 = [1, 2, 4, 5]s1 = set(l1)print(type(s1))print(s1)输出:{1, 2, 4, 5}2、set转换为lists1 = set([1, 2...
byte[]与各种数据类型互相转换示例
package com.silot.test; import org.junit.Test; import java.io.*; import java.util.Arrays; public class Byte { /** * short到字节数组的转换. */ public static byte[] shortToByte(short numb...
mysql decimal 实现_mysql decimal数据类型转换的实现示例
mysql decimal数据类型转换的实现示例发布时间:2021-02-14 08:40:00来源:亿速云阅读:85作者:小新小编给大家分享一下mysql decimal数据类型转换的实现示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!最近在工作遇到数据库中存的数据类型是: decimal(14,4)遇到的问题是:当我使用python 读取到内存中时,总是带着 decimal...
sql 查询mysql 数据类型转换_mysql数据类型转换的示例
mysql数据类型转换的示例发布时间:2021-02-14 17:40:01来源:亿速云阅读:63作者:小新这篇文章给大家分享的是有关mysql数据类型转换的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、问题有一张如下图所示的表,需要我们查出 result 值大于 reference_high值的数据然后我们写了下面的SQL查询语句SELECTi.result...
python数据类怎么转换_Python常见数据类型转换操作示例 python 怎么转换类型数据...
python 数据类型转换python 用networks工具包的mini_spanning_tree(G)函数分享的图G(邻接矩sure flower day, "flower你对小编说过,你跟小编在一起狠快乐,就像你的在小编身上的撒下一抹盐水,你狠快乐吗?那请继续。如何利用Python语言对字典数据类型进行各种操作小编们的距离或许很近,但心的方向却隔了好几公里。第一步,声明一个字典tree,赋...
1964



被折叠的 条评论
为什么被折叠?



