将字符串转换成16进制1、将普通字符串转换成16进制的字符串。
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);
}
}
效果图:
End!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论