/*--------------------------------------------------------------*/c++
//UCS2編碼ide
// 輸入: pSrc - 源字符串指針編碼
//nSrcLength - 源字符串長度spa
// 輸出: pDst - 目標編碼串指針指針
// 返回: 目標編碼串長度code
/*----------------------------------------------------------------*/字符串
intgsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength)co
{字符
intnDstLength; // UNICODE寬字符數目return
WCHARwchar[128]; // UNICODE串緩衝區
// 字符串-->UNICODE串
nDstLength= MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchar, 128);
// 高低字節對調,輸出
for(inti=0; i<nDstLength; i++)
{
*pDst++= wchar[i] >> 8; // 先輸出高位字節
*pDst++= wchar[i] & 0xff; // 後輸出低位字節
}
// 返回目標編碼串長度
returnnDstLength * 2;
}
/*----------------------------------------------------*/
//UCS2解碼
// 輸入: pSrc - 源編碼串指針
//nSrcLength - 源編碼串長度
// 輸出: pDst - 目標字符串指針
// 返回: 目標字符串長度
/*-------------------------------------------------------*/
intgsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
intnDstLength; // UNICODE寬字符數目
WCHARwchar[128]; // UNICODE串緩衝區
// 高低字節對調,拼成UNICODE
for(inti=0; i<nSrcLength/2; i++)
{
wchar[i]= *pSrc++ << 8; // 先高位字節
wchar[i]|= *pSrc++; // 後低位字節
}
//UNICODE串-->字符串
nDstLength= WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL);
// 輸出字符串加個結束符
pDst[nDstLength]= '/0';
// 返回目標字符串長度
returnnDstLength;
}轉自bbs.sendsms.cn