C# 16进制与字符串、字节数组之间的转换

【C# 16进制与字符串、字节数组之间的转换】在串口通讯过程中,经常要用到 16进制与字符串、字节数组之间的转换

C# 16进制与字符串、字节数组之间的转换
文章图片

C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 字符串转16进制字节数组
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
private static byte[] strToToHexByte(string hexString)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
hexString = hexString.Replace(" ", "");
C# 16进制与字符串、字节数组之间的转换
文章图片
if ((hexString.Length % 2) != 0)
C# 16进制与字符串、字节数组之间的转换
文章图片
hexString += " ";
C# 16进制与字符串、字节数组之间的转换
文章图片
byte[] returnBytes = new byte[hexString.Length / 2];
C# 16进制与字符串、字节数组之间的转换
文章图片
for (int i = 0; i < returnBytes.Length; i++)
C# 16进制与字符串、字节数组之间的转换
文章图片
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
C# 16进制与字符串、字节数组之间的转换
文章图片
return returnBytes;
C# 16进制与字符串、字节数组之间的转换
文章图片
}

C# 16进制与字符串、字节数组之间的转换
文章图片

C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 字节数组转16进制字符串
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
public static string byteToHexStr(byte[] bytes)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
string returnStr = "";
C# 16进制与字符串、字节数组之间的转换
文章图片
if (bytes != null)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
for (int i = 0; i < bytes.Length; i++)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
returnStr += bytes[i].ToString("X2");
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
return returnStr;
C# 16进制与字符串、字节数组之间的转换
文章图片
}

C# 16进制与字符串、字节数组之间的转换
文章图片

C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 从汉字转换到16进制
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 编码,如"utf-8","gb2312"
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 是否每字符用逗号分隔
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
public static string ToHex(string s, string charset, bool fenge)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
if ((s.Length % 2) != 0)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
s += " "; //空格
C# 16进制与字符串、字节数组之间的转换
文章图片
//throw new ArgumentException("s is not valid chinese string!");
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
C# 16进制与字符串、字节数组之间的转换
文章图片
byte[] bytes = chs.GetBytes(s);
C# 16进制与字符串、字节数组之间的转换
文章图片
string str = "";
C# 16进制与字符串、字节数组之间的转换
文章图片
for (int i = 0; i < bytes.Length; i++)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
str += string.Format("{0:X}", bytes[i]);
C# 16进制与字符串、字节数组之间的转换
文章图片
if (fenge && (i != bytes.Length - 1))
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
str += string.Format("{0}", ",");
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
return str.ToLower();
C# 16进制与字符串、字节数组之间的转换
文章图片
}

C# 16进制与字符串、字节数组之间的转换
文章图片

C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 从16进制转换成汉字
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
/// 编码,如"utf-8","gb2312"
C# 16进制与字符串、字节数组之间的转换
文章图片
///
C# 16进制与字符串、字节数组之间的转换
文章图片
public static string UnHex(string hex, string charset)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
if (hex == null)
C# 16进制与字符串、字节数组之间的转换
文章图片
throw new ArgumentNullException("hex");
C# 16进制与字符串、字节数组之间的转换
文章图片
hex = hex.Replace(",", "");
C# 16进制与字符串、字节数组之间的转换
文章图片
hex = hex.Replace("\n", "");
C# 16进制与字符串、字节数组之间的转换
文章图片
hex = hex.Replace("\\", "");
C# 16进制与字符串、字节数组之间的转换
文章图片
hex = hex.Replace(" ", "");
C# 16进制与字符串、字节数组之间的转换
文章图片
if (hex.Length % 2 != 0)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
hex += "20"; //空格
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
// 需要将 hex 转换成 byte 数组。
C# 16进制与字符串、字节数组之间的转换
文章图片
byte[] bytes = new byte[hex.Length / 2];
C# 16进制与字符串、字节数组之间的转换
文章图片

C# 16进制与字符串、字节数组之间的转换
文章图片
for (int i = 0; i < bytes.Length; i++)
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
try
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
// 每两个字符是一个 byte。
C# 16进制与字符串、字节数组之间的转换
文章图片
bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
C# 16进制与字符串、字节数组之间的转换
文章图片
System.Globalization.NumberStyles.HexNumber);
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
catch
C# 16进制与字符串、字节数组之间的转换
文章图片
{
C# 16进制与字符串、字节数组之间的转换
文章图片
// Rethrow an exception with custom message.
C# 16进制与字符串、字节数组之间的转换
文章图片
throw new ArgumentException("hex is not a valid hex number!", "hex");
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
}
C# 16进制与字符串、字节数组之间的转换
文章图片
System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
C# 16进制与字符串、字节数组之间的转换
文章图片
return chs.GetString(bytes);
C# 16进制与字符串、字节数组之间的转换
文章图片
} 来源:http://www.cnblogs.com/feishanm/archive/2008/10/20/1315516.html

    推荐阅读