⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_20401.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:20401 发表者:小泥潭 发表日期:2002-11-06 11:28:58
<br>主题:紧急求救:一个C类型转换的问题
<br>内容:请教大侠如何把CString类型转换为unsigned cha*类型<BR><BR>我调用一个md5的函数,函数原型是这样的:<BR>void MD5Update ( unsigned char *input, unsigned int inputLen);<BR>我的目的是从文件里读一字符串,获得这个字符串md5运算后的值,请问如何转换!我刚刚学习VC,希望大家能帮帮我,万分感谢·!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:ase 回复日期:2002-11-06 12:03:15
<br>内容:CString strData="1234567890";<BR>MD5Update(reinterpret_cast &lt;unsigned char *&gt; (strData.GetBuffer(0)),10);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:^_^ 回复日期:2002-11-06 12:50:51
<br>内容:CString strData="1234567890";<BR>MD5Update((LPCTSTR)strData, strData.GetLength()); 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:树爱兵 回复日期:2002-11-11 18:44:10
<br>内容:我们先定义一些常见类型变量借以说明<BR><BR>int i = 100;<BR>long l = 2001;<BR>float f=300.2;<BR>double d=12345.119;<BR>char username[]="sab";<BR>char temp[200];<BR>char *buf;<BR>CString str;<BR>_variant_t v1;<BR>_bstr_t v2;<BR><BR>一、其它数据类型转换为字符串<BR><BR><BR>短整型(int)<BR>itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制<BR>itoa(i,temp,2); ///按二进制方式转换 <BR>长整型(long)<BR>ltoa(l,temp,10);<BR><BR><BR>二、从其它包含字符串的变量中获取指向该字符串的指针<BR><BR><BR>CString变量<BR>str = "2008北京奥运";<BR>buf = (LPSTR)(LPCTSTR)str; <BR>BSTR类型的_variant_t变量<BR>v1 = (_bstr_t)"程序员";<BR>buf = _com_util::ConvertBSTRToString((_bstr_t)v1);<BR><BR>三、字符串转换为其它数据类型<BR>strcpy(temp,"123"); <BR><BR>短整型(int)<BR>i = atoi(temp); <BR>长整型(long)<BR>l = atol(temp); <BR>浮点(double)<BR>d = atof(temp);<BR><BR>四、其它数据类型转换到CString<BR>使用CString的成员函数Format来转换,例如:<BR><BR><BR>整数(int)<BR>str.Format("%d",i); <BR>浮点数(float)<BR>str.Format("%f",i); <BR>字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值<BR>str = username;<BR><BR>五、BSTR、_bstr_t与CComBSTR<BR><BR><BR>CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。<BR>char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR("数据");///使用前需要加上头文件comutil.h<BR>反之可以使用char *p=_com_util::ConvertBSTRToString(b);<BR><BR><BR>六、VARIANT 、_variant_t 与 COleVariant<BR><BR><BR>VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。<BR>对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:<BR>VARIANT va;<BR>int a=2001;<BR>va.vt=VT_I4;///指明整型数据<BR>va.lVal=a; ///赋值<BR><BR>对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:<BR><BR>unsigned char bVal; VT_UI1 <BR>short iVal; VT_I2 <BR>long lVal;&nbsp;&nbsp;VT_I4&nbsp;&nbsp;<BR>float fltVal;&nbsp;&nbsp;VT_R4 <BR>double dblVal;&nbsp;&nbsp;VT_R8&nbsp;&nbsp;<BR>VARIANT_BOOL boolVal;&nbsp;&nbsp;VT_BOOL <BR>SCODE scode;&nbsp;&nbsp;VT_ERROR <BR>CY cyVal;&nbsp;&nbsp;VT_CY <BR>DATE date;&nbsp;&nbsp;VT_DATE <BR>BSTR bstrVal;&nbsp;&nbsp;VT_BSTR <BR>IUnknown FAR* punkVal;&nbsp;&nbsp;VT_UNKNOWN <BR>IDispatch FAR* pdispVal;&nbsp;&nbsp;VT_DISPATCH <BR>SAFEARRAY FAR* parray;&nbsp;&nbsp;VT_ARRAY|* <BR>unsigned char FAR* pbVal;&nbsp;&nbsp;VT_BYREF|VT_UI1 <BR>short FAR* piVal;&nbsp;&nbsp;VT_BYREF|VT_I2 <BR>long FAR* plVal;&nbsp;&nbsp;VT_BYREF|VT_I4 <BR>float FAR* pfltVal;&nbsp;&nbsp;VT_BYREF|VT_R4 <BR>double FAR* pdblVal; VT_BYREF|VT_R8 <BR>VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL <BR>SCODE FAR* pscode;&nbsp;&nbsp;VT_BYREF|VT_ERROR <BR>CY FAR* pcyVal;&nbsp;&nbsp;VT_BYREF|VT_CY <BR>DATE FAR* pdate; VT_BYREF|VT_DATE <BR>BSTR FAR* pbstrVal;&nbsp;&nbsp;VT_BYREF|VT_BSTR <BR>IUnknown FAR* FAR* ppunkVal;&nbsp;&nbsp;VT_BYREF|VT_UNKNOWN <BR>IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH <BR>SAFEARRAY FAR* FAR* pparray;&nbsp;&nbsp;VT_ARRAY|* <BR>VARIANT FAR* pvarVal;&nbsp;&nbsp;VT_BYREF|VT_VARIANT <BR>void FAR* byref;&nbsp;&nbsp;VT_BYREF <BR><BR><BR>_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。<BR>例如:<BR>long l=222;<BR>ing i=100;<BR>_variant_t lVal(l);<BR>lVal = (long)i;<BR><BR><BR>COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:<BR>COleVariant v3 = "字符串", v4 = (long)1999;<BR>CString str =(BSTR)v3.pbstrVal;<BR>long i = v4.lVal;<BR><BR><BR>七、其它<BR><BR>对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:<BR>LPARAM lParam;<BR>WORD loValue = LOWORD(lParam);///取低16位<BR>WORD hiValue = HIWORD(lParam);///取高16位 <BR>对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:<BR>WORD wValue;<BR>BYTE loValue = LOBYTE(wValue);///取低8位<BR>BYTE hiValue = HIBYTE(wValue);///取高8位 <BR><BR><BR>---------------<BR>2002-11-11 18:45:55

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -