这两天做一个小工具,本开开始用的是字节修改,最后感觉用16进制更方便,所以给这两个互转代码给贴出来啦。
#region 字符串与十六进制码转换方法
/// <summary>
/// <函数:Encode>
/// 作用:将字符串内容转化为16进制数据编码,其逆过程是Decode
/// 参数说明:
/// strEncode 需要转化的原始字符串
/// 转换的过程是直接把字符转换成Unicode字符,比如数字"3"-->0033,汉字"我"-->U+6211
/// 函数decode的过程是encode的逆过程.
/// </summary>
/// <param name="strEncode"></param>
/// <returns></returns>
public static string Encode(string strEncode)
{
string strReturn = "";// 存储转换后的编码
foreach (short shortx in strEncode.ToCharArray())
{
strReturn += shortx.ToString("X4");
}
return strReturn;
}
/// <summary>
/// <函数:Decode>
///作用:将16进制数据编码转化为字符串,是Encode的逆过程
/// </summary>
/// <param name="strDecode"></param>
/// <returns></returns>
public static string Decode(string strDecode)
{
if (!IsHexadecimal(strDecode))
{
return "您输入的不是一个有效的16进制格式文本";
}
string sResult = "";
for (int i = 0; i < strDecode.Length / 4; i++)
{
sResult += (char)short.Parse(strDecode.Substring(i * 4, 4), global::System.Globalization.NumberStyles.HexNumber);
}
return sResult;
}
/// <summary>
/// 判断是否是16进制格式文本,用在16进制转字符串
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsHexadecimal(string str)
{
const string PATTERN = @"[A-Fa-f0-9]+$";
return System.Text.RegularExpressions.Regex.IsMatch(str, PATTERN);
}
#endregion