1、将普通的字符串。
class Program { static void Main(string[] args) { string str = "Hello,C#!!!"; //调用。 string result = StringToHex16String(str); Console.WriteLine(string.Format("将普通字符串:{0}转换成16进制字符串是:{1}", str, result)); Console.ReadKey(); } /// <summary> /// 此方法用于将普通字符串转换成16进制的字符串。 /// </summary> /// <param name="_str">要转换的字符串。</param> /// <returns></returns> public static string StringToHex16String(string _str) { //将字符串转换成字节数组。 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(_str); //定义一个string类型的变量,用于存储转换后的值。 string result = string.Empty; for (int i = 0; i < buffer.Length; i++) { //将每一个字节数组转换成16进制的字符串,以空格相隔开。 result += Convert.ToString(buffer[i], 16) + " "; } return result; } }
转换结果是:
2、将16进制的字符串转换成普通字符串。
class Program { static void Main(string[] args) { string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21"; string result = Hex16StringToString(hex16String); Console.WriteLine("将16进制字符串:{0}转换成普通字符串是:{1}", hex16String, result); Console.ReadKey(); } /// <summary> /// 此方法用于将16进制的字符串转换成普通字符串。 /// </summary> /// <param name="_hex16String">要转换的16进制的字符串。</param> /// <returns></returns> private static string Hex16StringToString(string _hex16String) { string result = string.Empty; //以空格分割字符串。 string[] chars = _hex16String.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); //声明一个字节数组,其长度等于分割的字符串的长度。 byte[] buffer = new byte[chars.Length]; for (int i = 0; i < buffer.Length; i++) { //将chars数组中的元素转换成字节数组。 buffer[i] = Convert.ToByte(chars[i], 16); } //将字节数组转换成字符串。 result = System.Text.Encoding.UTF8.GetString(buffer); //返回。 return result; } }
效果图:
3、将16进制的字符串转换成16进制的字节数组。
class Program { static void Main(string[] args) { string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21"; //引用。 byte[] bytes = Hex16StringToHex16Byte(hex16String); } /// <summary> /// 此方法用于将16进制的字符串转换成16进制的字节数组 /// </summary> /// <param name="_hex16ToString">要转换的16进制的字符串。</param> public static byte[] Hex16StringToHex16Byte(string _hex16String) { //去掉字符串中的空格。 _hex16String = _hex16String.Replace(" ", ""); if (_hex16String.Length / 2 == 0) { _hex16String += " "; } //声明一个字节数组,其长度等于字符串长度的一半。 byte[] buffer = new byte[_hex16String.Length / 2]; for (int i = 0; i < buffer.Length; i++) { //为字节数组的元素赋值。 buffer[i] = Convert.ToByte((_hex16String.Substring(i * 2, 2)), 16); } //返回字节数组。 return buffer; } }
效果图:
4、将16进制的字节数组转换成16进制的字符串。
class Program { static void Main(string[] args) { string hex16String = "48 65 6c 6c 6f 2c 43 23 21 21 21"; byte[] bytes = Hex16StringToHex16Byte(hex16String); string result = Hex16ByteToHex16String(bytes); Console.WriteLine(string.Format("转换成16进制的字符串是:{0}", result)); Console.ReadKey(); } /// <summary> /// 此方法用于将16进制的字节数组转换成16进制的字符串。 /// </summary> /// <param name="_hex16Byte">要转换的16进制的字节数组。</param> /// <returns></returns> public static string Hex16ByteToHex16String(byte[] _hex16Byte) { string result = string.Empty; //如果字节数组不为空。 if (_hex16Byte != null) { for (int i = 0; i < _hex16Byte.Length; i++) { //将每一个字节数组转换成16进制string类型的字符串,用空格分隔开。 result += _hex16Byte[i].ToString("X2") + " "; } } return result; } }
效果图:
5、将字符串转换成16进制。
class Program { static void Main(string[] args) { string str = "*!!!"; string result = StringTo16Hex(str, Encoding.UTF8, true); Console.WriteLine(string.Format("将字符串:{0}转换成16进制后是:{1}", str, result)); Console.ReadKey(); } /// <summary> /// 此方法用于将字符串转化成16进制。 /// <param name="_str">要转换的字符串。</param> /// <param name="_encode">编码格式(UTF-8、gb2312)</param> /// <param name="_isHaveSpace">是否用空格分隔</param> // <returns></returns> public static string StringTo16Hex(string _str, Encoding _encode,bool _isHaveSpace) { string result = string.Empty; if (_str.Length / 2 != 0) { _str += " "; } //将字符串转换成字节数组。 byte[] buffer = _encode.GetBytes(_str); for (int i = 0; i < buffer.Length; i++) { result += string.Format("{0:X}", buffer[i]); if (_isHaveSpace && (i != buffer.Length - 1)) { //result += " "; //或者写成以下这种。 result += string.Format("{0}", " "); } } return result; } }
效果图:
6、将16进制转换成字符串。
class Program { static void Main(string[] args) { string str = "*!!!"; string result = StringTo16Hex(str, Encoding.UTF8, true); Console.WriteLine(); Console.WriteLine(string.Format("将字符串:{0}转换成16进制后是:{1}", str, result)); Console.WriteLine("---------------------------------"); string result2 = Hex16ToString(result,Encoding.UTF8); Console.WriteLine(string.Format("将16进制:{0} 转换成字符串是:{1}", result, result2)); Console.ReadKey(); } /// <summary> /// 此方法用于将16进制转换成字符串。 /// </summary> /// <param name="_str">要转换的16进制。</param> /// <param name="_encode">编码的格式。</param> /// <returns></returns> public static string Hex16ToString(string _str, Encoding _encode) { if (_str == null) { return ""; } //去掉空格、逗号、斜杠 _str = _str.Replace(",", ""); _str = _str.Replace("\n", ""); _str = _str.Replace("\\", ""); _str = _str.Replace(" ", ""); if (_str.Length % 2 == 0) { _str += "20"; //空格 } //新建字节数组。 byte[] buffer = new byte[_str.Length / 2]; for (int i = 0; i < buffer.Length; i++) { try { //每两个字符是一个 byte。 buffer[i] = byte.Parse(_str.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber); } catch (Exception ex) { //错误异常处理。 throw ex; } } //返回 return _encode.GetString(buffer, 0, buffer.Length); } }
效果图: