本帖最后由 mu77303061 于 2011-04-14 16:24:45 编辑

解决方案 »

  1.   

    ...这个是编译错误...和Unicode无关...
      

  2.   

    char out_msg[1024];
    out_msg=HexStringToUnicode(in_msg);

    你返回的p是在堆栈上的,返回后就失效了...不能这么干
      

  3.   

    囧,
    char out_msg[1024];
    out_msg=HexStringToUnicode(in_msg);你的数组名还能做l_value ??
      

  4.   

    这两句
    out_msg=HexStringToUnicode(in_msg);
    strcpy(m_out,out_msg);
      

  5.   

    p 是static的,应该可以吧。
    因为我把static却掉它会报错的。
      

  6.   

    那请问我该怎么做呢?
    解码出来的wchar_r又该怎么显示出来呢?
    还有解码出来的东西是该保存在wchar_t数组里再返回还是保存在char数组里呢?
      

  7.   

    char out_msg[1024];
    strcpy(out_msg, HexStringToUnicode(in_msg));
    你可以这样做~
      

  8.   


    我改成void CUnicodeDlg::OnButtonDecode() 
    {
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    char in_msg[1024];
    //char out_msg[1024]; memset(in_msg,0,1024);
    //memset(out_msg,0,1024); strcpy(in_msg,m_in); m_out=HexStringToUnicode(in_msg);
    //m_out='\0';
    //strcpy(m_out,out_msg); UpdateData(FALSE);}之后编译是可以通过但运行
    输入“4F60597D”输出的却是“恏絙”。
    所以才搞了char out_msg[1024];
    out_msg=HexStringToUnicode(in_msg);这种写法的。
      

  9.   

        for(i=0; i<nSrcLength/4; i++)
        {
            wchar[i] = temp[i*2+1] << 8;    // 先高位字节
            wchar[i] |= temp[i*2];        // 后低位字节
        }
      需要改成
        for(i=0; i<nSrcLength/4; i++)
        {
            wchar[i] = temp[i*2] << 8;    // 先地位
            wchar[i] |= temp[i*2+1];        // 后高位字节
        }这样才能实现解码