写了个DLL,定义了一个函数,参数类型为 LPCTSTR ,本意是用来接收一个十六进制字符串的,如:\xe0\xa1 
在内部测试时,函数能够把参数当作十六进制来处理,但外部调用的时候去成了字符串,请帮想办法解决。
CString test(LPCTSTR string1) 
{
     ::MessageBox(0, string1, string1, MB_OK); 
     /*      VC 里调用,参数 "\xe0\xa1"  这里弹出消息框显示乱码
     外部调用DLL时  参数同样使用 "\xe0\xa1" ,弹出消息框显示是 "\xe0\xa1",没有把它当成十六进制,怎么才能让它向在VC里测试一样?     */
}

解决方案 »

  1.   

    CString test(LPCTSTR string1)  //这是DLL中的一个函数
    {
         ::MessageBox(0, string1, string1, MB_OK); 
    }把这个函数复制到MFC工程中,用 "\xe4\xbd\xa0" 作为参数调用 ,结果弹出的消息框文本是“你”,"\xe4\xbd\xa0" 这几个十六进制代码就表示“你”字,这个是我想要的效果。在其他程序调用这个DLL中的 test函数时,同样用 "\xe4\xbd\xa0" 作参数,结果弹出的消息框文本是"\xe4\xbd\xa0",意思就是函数没有将这个参数当成十六进制代码,没有达到我的要求。
      

  2.   

    你这个是UTF8编码吧?char szText[] = "\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;
      

  3.   


    "\xe4\xbd\xa0“ 这个确实是UTF-8编码,我的目的就是要写一个DLL,把UTF-8编码的16进制代码传递过去,再转换成ASNI编码返回,转换已经实现了,现在是参数传递的问题。怎么把“E4 BD A0”这个十六进制代码传递给DLL,让DLL知道这是个十六进制代码,而不是普通的字符串。就像转义字符 \xE4 就告诉程序,后面的E4是十六进制代码一样。
      

  4.   

    谢谢各位的回答,但还是没有解决我的问题,说简单一点:
    怎样把  "e4 bd a0" 这个字符串 转换成 “你” 这个字