参数类型问题

visiond 2002-06-04 10:35:54
有一个已经定义好的类有一个公开的方法:
static CString GetMD5(BYTE* pBuf, UINT nLength)
我在程序中接受另一个传入参数pInVal,我必须将pInVal传给BYTE* pBuf 我应该怎么转换呢?(STDMETHODIMP CMD5::Encrypt(BSTR pInVal, BSTR *pOutVal)
))
...全文
134 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Muf 2002-06-26
  • 打赏
  • 举报
回复
这么小小的东西还要CString出宫?浪费。
char* 和unsigned char*转换出错是因为W2A等返回的是char*,而BYTE是unsigned char。直接进行强制类型转换即可。
visiond 2002-06-05
  • 打赏
  • 举报
回复
在MSDN中说:
CString s3 = s2; // Copy constructor
CString s4( s2 + " " + s3 ); // From a string expression
所以两者是构造方式不同,因此象这样:
CString s6( 'x', 6 );
结果是:s6 = "xxxxxx"

visiond 2002-06-05
  • 打赏
  • 举报
回复
是啊,是我搞在其它地方搞错啦,谢谢Muf(沐枫)
visiond 2002-06-05
  • 打赏
  • 举报
回复
是啊,是我搞在其它地方搞错啦,谢谢Muf(沐枫)
visiond 2002-06-04
  • 打赏
  • 举报
回复
up
Muf 2002-06-04
  • 打赏
  • 举报
回复
>> CString tempStr(buf)与CString tempStr = buf;有什么不同啊??
完全相同
visiond 2002-06-04
  • 打赏
  • 举报
回复
我后来这样解决了问题:
char* buf = _com_util::ConvertBSTRToString(pInVal);
CString tempStr(buf);
*pOutVal = _com_util::ConvertStringToBSTR(GetMD5((BYTE*)(const char*)tempStr,tempStr.GetLength()));
delete buf;

只是我有点不明白:
CString tempStr(buf)与CString tempStr = buf;有什么不同啊??
visiond 2002-06-04
  • 打赏
  • 举报
回复
BYTE* __temp = W2A(pInVal); //或BSTR2A
UINT __len = strlen(__temp);
CString out = GetMD5(__temp, __len);
*pOutVal = out.AllocString();

: error C2440: 'initializing' : cannot convert from 'char *' to 'unsigned char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
visiond 2002-06-04
  • 打赏
  • 举报
回复
up
Muf 2002-06-04
  • 打赏
  • 举报
回复
STDMETHODIMP CMD5::Encrypt(BSTR pInVal, BSTR *pOutVal)
{
USECONVERSION;
BYTE* __temp = BSTR2A(pInVal); //或W2A
UINT __len = strlen(__temp);
CString out = GetMD5(__temp, __len);
*pOutVal = out.AllocString();
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧