请教,这样的byte数组VC怎样实现?

ljy85292 2012-04-10 08:52:39
在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字符,上网早了很多资料,转化的结果都不一样。。。
...全文
269 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2012-04-11
  • 打赏
  • 举报
回复
http://blog.163.com/brilliant_wolf/blog/static/9329364620099105454257/
向立天 2012-04-11
  • 打赏
  • 举报
回复
既然你原理都清楚那编码实现就是了
VC中BYTE就是byte
ljy85292 2012-04-11
  • 打赏
  • 举报
回复
看看还有没有其他答案,楼上能弄点注释好吗,新手不太懂。。。。。。
xiaohuh421 2012-04-10
  • 打赏
  • 举报
回复
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;

}

16,470

社区成员

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

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

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