utf8 字符串的十六进制编码值怎么转化成Cstring字符串
张亚成 2017-07-30 01:55:01 已知:asd但是法s国1 的 utf8 编码值十六进制表示 是 “617364e4bd86e698afe6b39573e59bbd31”
我写的代码存在bug,请帮忙修改,代码如下:
void CMFCApplication2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
std::string strInput = "617364e4bd86e698afe6b39573e59bbd31";
int nLenInput = strInput.length();
CHAR* chTest = new CHAR(nLenInput / 2);
for (int i = 0; i < nLenInput; i += 2)
{
std::string strTemp = strInput.substr(i, 2);
chTest[i/ 2] = strtol(strTemp.c_str(), NULL, 16);
}
int nlen = MultiByteToWideChar(CP_UTF8, 0, chTest, -1, NULL, 0);
WCHAR* szBuf = new WCHAR[nlen + 1];
memset(szBuf, 0, sizeof(szBuf));
int nLenNew = MultiByteToWideChar(CP_UTF8, 0, chTest, -1, szBuf, nlen);
CString strText(szBuf, nLenNew);
AfxMessageBox(strText);
delete[] szBuf;
szBuf = NULL;
}
代码如上,请指点,谢谢。