UCS2編碼與解碼

/*--------------------------------------------------------------*/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

相關文章
相關標籤/搜索