在C#中,汉字转成十六进制的Utf8字符很方便(主要用到getencoding方法和getbytes方法);
例如:汉字“中”,转成16进制的UTF8为:“=E4=B8=AD”
他的实现原理就是把汉字转化UTF-8编码,再把UTF-8转化为byte数组,数组内容:byte[0]=228;byte[1]=184;byte[2]=173;然后依次转化为十六进制并加=号。
我想问VC要怎样实现上述过程,本人初学者,做手机通讯录时需要把中文姓名转为十六进制的UTF-8字符,上网早了很多资料,转化的结果都不一样

解决方案 »

  1.   

    BOOL CTranslateUTF8::UnicodeToUtf8(LPSTR strDes,int &iDesSize,LPCWSTR strSrc)
    {
    char*     pElementText=NULL;
    int    iTextLen=0;
    // wide char to multi char
    iTextLen = WideCharToMultiByte( CP_UTF8,
    0,
    strSrc,
    -1,
    NULL,
    0,
    NULL,
    NULL );
    if(iDesSize<iTextLen+2)
    {
    iDesSize=iTextLen+2;
    return FALSE;
    }
    pElementText = new char[iTextLen + 1];
    memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );
    ::WideCharToMultiByte( CP_UTF8,
    0,
    strSrc,
    -1,
    pElementText,
    iTextLen,
    NULL,
    NULL );
    memcpy(strDes,pElementText,iTextLen);
    delete[] pElementText;
    return TRUE;
    }BOOL CTranslateUTF8::AsciiToUtf8(LPSTR strDes,int &iDesSize,LPCSTR strSrc)
    {
    WCHAR *buf=new WCHAR[iDesSize];
    memset(buf,0,iDesSize*2);
    int len=iDesSize;
    if(AsciiToUnicode(buf,len,strSrc))
    {
    if(UnicodeToUtf8(strDes,iDesSize,buf))
    {
    delete [] buf;
    return TRUE;
    }
    }
    delete [] buf;
    return FALSE;
    }
    BOOL CTranslateUTF8::AsciiToUnicode(LPWSTR strDes,int &iDesSize,LPCSTR strSrc)
    {
    //int len = 0;
    //len = strlen(strSrc);
    int unicodeLen = ::MultiByteToWideChar( CP_ACP,
    0,
    strSrc,
    -1,
    NULL,
    0 ); 
    if(iDesSize<unicodeLen+2)
    {
    iDesSize=unicodeLen+2;
    return FALSE;
    }
    wchar_t * pUnicode=NULL; 
    pUnicode = new wchar_t[unicodeLen+1]; 
    memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); 
    ::MultiByteToWideChar( CP_ACP,
    0,
    strSrc,
    -1,
    (LPWSTR)pUnicode,
    unicodeLen ); 
    memcpy(strDes,pUnicode,unicodeLen*2);
    delete [] pUnicode; 
    return TRUE; }
      

  2.   

    既然你原理都清楚那编码实现就是了
    VC中BYTE就是byte
      

  3.   

    http://blog.163.com/brilliant_wolf/blog/static/9329364620099105454257/