字节数组与字符串之间的相互转换
//将字节转换成字符串(16进制) // 方法1 public string Bytes2HexString(byte[] bytes) { string str= ""; for (int i = 0; i < bytes.Length; i++) { str += string.Format("{0:X2}", bytes[i]); } return str; } // 方法2 public string Bytes2HexString(byte[] bytes) { string str= string.Concat(bytes.Select(u => u.ToString("X2"))); return str; } // 方法3 public string Bytes2HexString(byte[] bytes) { string str= BitConverter.ToString(bytes).ToUpper(); return str; } // 方法4 public string Bytes2HexString(byte[] bytes) { StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) { sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')); } return sb.ToString().ToUpper(); } // 方法5 public string Bytes2HexString(byte[] bytes) { string str = ""; if (insBytes != null) { for (int i = 0; i < length; i++) { str += insBytes[i].ToString("X2"); } } return str; }
//将字符串(16进制)转化成字节数组
// 方法1
public byte[] HexString2Bytes(string str, int length)
{
byte[] bytes= new byte[length];
for (int i = 0; i < length; i++)
{
bytes[i] = Convert.ToByte("0X" + str.Substring(i * 2, 2), 16);
}
return bytes;
}
// 方法2
public byte[] HexString2Bytes(string hexString)
{
if (hexString.Length % 2 != 0)
throw new ArgumentException();
byte[] bytes = Enumerable.Range(0, hexString.Length / 2) //Range产生一个Enumerable类型的[0,1,2, ......]索引数组
.Select(i => Convert.ToByte(hexString.Substring(i * 2, 2), 16))
.ToArray();
return bytes;
}
public string Bytes2HexString(byte[] bytes)
{
string str= string.Concat(bytes.Select(u => u.ToString("X2")));
return str;
}