一个Unicode文本文件中含三个字符,用WinHex查看其编码为:
(去掉了前面两个字节的格式字符)
61 00 51 01 62 00我现在有一个Byte类型的指针pBype指向上面的第一个字节(61),想取出中间那个Unicode字符该怎么取?我用这样的方法:
TCHAR ch=(TCHAR)*(pBype+2);但取出来的 ch 是字符 Q (51 00),而中间那个Unicode字符(51 01)应该是一个西欧字符。因为一些其它方面的限制,我必须通过pBype指针来取。谢谢解答!
(去掉了前面两个字节的格式字符)
61 00 51 01 62 00我现在有一个Byte类型的指针pBype指向上面的第一个字节(61),想取出中间那个Unicode字符该怎么取?我用这样的方法:
TCHAR ch=(TCHAR)*(pBype+2);但取出来的 ch 是字符 Q (51 00),而中间那个Unicode字符(51 01)应该是一个西欧字符。因为一些其它方面的限制,我必须通过pBype指针来取。谢谢解答!
TCHAR ch=(TCHAR)*(pBype[3]<<8 + pBype[2] );或者是。
TCHAR ch=(TCHAR)*(pBype[2]<<8 + pBype[3] );
把Unicode文本,保存到一个CString中转换到CString来处理#ifdef UNICODE
CString strText(_T("ab我bc"));//保存了你的Unicode文本
#else
USES_CONVERSION;
CString strTextA(_T("a我bc"));
CStringW strText(A2W(strTextA));//保存了你的Unicode文本
#endif
//CString str = strText.Mid(1,1);//取得第2个字符
BYTE *pBype = new BYTE[1000];
memset(pBype,0,sizeof(pBype));
memcpy(pBype,strText.GetBuffer(),strText.GetLength()*sizeof(WCHAR));
strText.ReleaseBuffer(); BYTE *pBype1 = pBype+2; WCHAR ch;
memcpy(&ch,pBype1,sizeof(WCHAR)); delete [] pBype;
pBype = NULL;
1.我上面只是举个例子,实际上我那个unicode文件很大,不能将文件内容全部保存到CString中。
2.我的pBype是通过内存映射来获得的。
3.我的项目是unicode项目。继续等待解答,谢谢!
或者
TCHAR ch = *((TCHAR*)pByte + 1);