我在编写串口通讯软件时需要将byte字节转为16进制字符串,或者将16进制字符串转为byte,通过写两个方法完成两方的转换
1.byte转16进制字符串
public static string ByteToHex(byte[] data){
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();
}
其中,使用StringBuilder的好处在于:若利用String类型,在建立或修改字符串时,会消耗空间,使用此类型修改字符串不会创建新的对象。
在使用时定义一个string类型变量,并将此方法返回的值作为初始化string变量的值即可,即
string str = ByteToHex(Byte[] b)
2.16进制字符串转Byte
public static byte[] HexToByte(string hex)
{
var byte = new byte[hex.Length / 2];
for (var x = 0; x < byte.Length; x++)
{
var i = Convert.ToInt32(hex.Substring(x * 2, 2), 16);
byte[x] = (byte)i;
}
return byte;
}
其中var关键字是用来代替具体的类型,交给编译器来根据初始化来判断应是什么类型