写了个DLL,定义了一个函数,参数类型为 LPCTSTR ,本意是用来接收一个十六进制字符串的,如:\xe0\xa1
在内部测试时,函数能够把参数当作十六进制来处理,但外部调用的时候去成了字符串,请帮想办法解决。
CString test(LPCTSTR string1)
{
::MessageBox(0, string1, string1, MB_OK);
/* VC 里调用,参数 "\xe0\xa1" 这里弹出消息框显示乱码
外部调用DLL时 参数同样使用 "\xe0\xa1" ,弹出消息框显示是 "\xe0\xa1",没有把它当成十六进制,怎么才能让它向在VC里测试一样? */
}
在内部测试时,函数能够把参数当作十六进制来处理,但外部调用的时候去成了字符串,请帮想办法解决。
CString test(LPCTSTR string1)
{
::MessageBox(0, string1, string1, MB_OK);
/* VC 里调用,参数 "\xe0\xa1" 这里弹出消息框显示乱码
外部调用DLL时 参数同样使用 "\xe0\xa1" ,弹出消息框显示是 "\xe0\xa1",没有把它当成十六进制,怎么才能让它向在VC里测试一样? */
}
解决方案 »
- 今天周五啦,没人发个散分贴吗
- 根据逻辑盘符(如:C:)求该盘符号对应连接的IDE或者SATA设备,要求不用WMI,不读直接读硬盘相关信息。
- 千古难题!半透明绘图,实时移动闪烁的问题,,大家都来聊聊~~
- 怎样在VC6中用IEXPLORE.EXE调试控件,用TestContainer很容易做到,谁能告诉我怎么操作吗?
- 关于自动运行的问题?
- 如何将整型转换成字符型
- About "Windows is now restarting..."100分!
- 新创建的类怎么使用对话框中输入的数据?
- 求个排序算法
- 我这样的水平能找到工作吗?
- 网页正文提取
- MFC对话框使用basicexcel类时,编译出现大量错误
{
::MessageBox(0, string1, string1, MB_OK);
}把这个函数复制到MFC工程中,用 "\xe4\xbd\xa0" 作为参数调用 ,结果弹出的消息框文本是“你”,"\xe4\xbd\xa0" 这几个十六进制代码就表示“你”字,这个是我想要的效果。在其他程序调用这个DLL中的 test函数时,同样用 "\xe4\xbd\xa0" 作参数,结果弹出的消息框文本是"\xe4\xbd\xa0",意思就是函数没有将这个参数当成十六进制代码,没有达到我的要求。
wchar_t* pBuf = NULL;
int nLen = MultiByteToWideChar(CP_UTF8, 0, szText, -1, pBuf, 0);
pBuf = new wchar_t[nLen];
memset(pBuf, 0, sizeof(wchar_t) * nLen);
MultiByteToWideChar(CP_UTF8, 0, szText, -1, pBuf, nLen);
MessageBoxW(NULL, pBuf, L"Message", 0);
delete[] pBuf;
pBuf = NULL;
"\xe4\xbd\xa0“ 这个确实是UTF-8编码,我的目的就是要写一个DLL,把UTF-8编码的16进制代码传递过去,再转换成ASNI编码返回,转换已经实现了,现在是参数传递的问题。怎么把“E4 BD A0”这个十六进制代码传递给DLL,让DLL知道这是个十六进制代码,而不是普通的字符串。就像转义字符 \xE4 就告诉程序,后面的E4是十六进制代码一样。
怎样把 "e4 bd a0" 这个字符串 转换成 “你” 这个字