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

本文详细介绍了UCS2编码与解码的方法,包括如何将UCS2源串转换为UTF-16BE字符串及反向操作。通过正则表达式验证输入字符串的有效性,并使用StringBuilder进行字符转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址: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
=new
StringBuilder();

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));
}

return
builer.ToString();
}

///<summary>

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

///<paramname="src">UTF-16BE编码的源串</param>
///<returns>编码后的UCS2串</returns>
publicstaticstringEncodeUCS2(stringsrc)
{
StringBuilderbuiler
=new
StringBuilder();
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
);

return
builer.ToString();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值