原文地址:http://www.cnblogs.com/ycdx2001/archive/2011/04/24/2026468.html
///<summary>
///UCS2解码
///</summary>
///<paramname="src">UCS2源串</param>
///<returns>解码后的UTF-16BE字符串</returns>
publicstaticstringDecodeUCS2(stringsrc)
{
stringdecucs=src.Remove(src.IndexOf("/r"));
stringpstr="^[0-9a-fA-F]+$";
if(!Regex.IsMatch(decucs,pstr))
{
return"非法字符串无法解析!";
}
StringBuilderbuiler=newStringBuilder();
for(inti=0;i<decucs.Length;i+=4)
{
intunicode_nu=Int32.Parse(decucs.Substring(i,4),System.Globalization.NumberStyles.HexNumber);
builer.Append(string.Format("{0}",(char)unicode_nu));
}
returnbuiler.ToString();
}
///<summary>
///UCS2编码
///</summary>
///<paramname="src">UTF-16BE编码的源串</param>
///<returns>编码后的UCS2串</returns>
publicstaticstringEncodeUCS2(stringsrc)
{
StringBuilderbuiler=newStringBuilder();
builer.Append("000800");
byte[]tmpSmsText=Encoding.Unicode.GetBytes(src);
builer.Append(tmpSmsText.Length.ToString("X2"));//正文内容长度
for(inti=0;i<tmpSmsText.Length;i+=2)//高低字节对调
{
builer.Append(tmpSmsText[i+1].ToString("X2"));//("X2")转为16进制
builer.Append(tmpSmsText[i].ToString("X2"));
}
builer=builer.Remove(0,8);
returnbuiler.ToString();
}