C#PDU编码UCS2加密解密函数

来源:互联网 发布:淘宝优惠劵淘易惠 编辑:程序博客网 时间:2024/05/22 00:10

原文地址:http://www.cnblogs.com/ycdx2001/archive/2011/04/24/2026468.html

       /// <summary>
       
/// UCS2解码 
       
/// </summary>

       
/// <param name="src"> UCS2 源串 </param>
       
/// <returns> 解码后的UTF-16BE字符串</returns>
       public static string DecodeUCS2(string src)
       {
           
string decucs = src.Remove(src.IndexOf("/r"
));
           
string pstr = "^[0-9a-fA-F]+$"
;
           
if (!
Regex.IsMatch(decucs, pstr))
           {
               
return "非法字符串无法解析!"
;
           }

           StringBuilder builer 
= new
 StringBuilder();

           
for (int i = 0; i < decucs.Length; i += 4
)
           {
               
int unicode_nu = Int32.Parse(decucs.Substring(i, 4
), System.Globalization.NumberStyles.HexNumber);
               builer.Append(
string.Format("{0}", (char
)unicode_nu));
           }

           
return
 builer.ToString();
       }

        
/// <summary>

        
/// UCS2编码
        
/// </summary>

        
/// <param name="src"> UTF-16BE编码的源串</param>
        
/// <returns>编码后的UCS2串 </returns>
        public static string EncodeUCS2(string src)
        {
            StringBuilder builer 
= new
 StringBuilder();
            builer.Append(
"000800"
);
            
byte[] tmpSmsText =
 Encoding.Unicode.GetBytes(src);
            builer.Append(tmpSmsText.Length.ToString(
"X2")); //正文内容长度

            for (int i = 0; i < tmpSmsText.Length; i += 2//高低字节对调 
            {
                builer.Append(tmpSmsText[i 
+ 1].ToString("X2"));//("X2")转为16进制

                builer.Append(tmpSmsText[i].ToString("X2"));
            }
            builer 
= builer.Remove(08
);

            
return
 builer.ToString();
        }  

原创粉丝点击