在 C# 中将 MAC 地址转换为字节数组
Convert MAC address to byte array in C#
我有一个简单的 MAC 地址作为字符串,"b8:27:eb:97:b6:39"
,我想将它放入一个字节数组,[184, 39, 235, 151, 182, 57]
在 C# 代码中。
所以我把它分成以下几部分:
var split = str.Split(':');
byte[] arr = new byte[6];
然后我需要某种 for
循环来将每个子字符串转换为 16 位整数。
我尝试了 Convert.ToInt8(split[i])
、split[i].ToChar(0,2)
、(char)split[i]
,但我不知道如何处理字符串字符并让它们成为一个 8 位数字。
给你
string mac = "b8:27:eb:97:b6:39";
byte[] arr = mac.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray();
您需要使用.Net框架的Byte.Parse方法。
byte value = Byte.Parse(split[1], NumberStyles.AllowHexSpecifier);
我建议使用 PhysicalAddress class 而不是自己做。
它有一个解析方法:
PhysicalAddress.Parse("b8:27:eb:97:b6:39").GetAdressBytes();
但它会失败,因为该方法只接受 -
作为字节分隔符。一个简单的扩展方法可以提供帮助:
public static byte[] ToMACBytes(this string mac) {
if (mac.IndexOf(':') > 0)
mac = mac.Replace(':', '-');
return PhysicalAddress.Parse(mac).GetAddressBytes();
}
然后使用:
byte[] macBytes = "b8:27:eb:97:b6:39".ToMACBytes();
编辑:包括建议。
我有一个简单的 MAC 地址作为字符串,"b8:27:eb:97:b6:39"
,我想将它放入一个字节数组,[184, 39, 235, 151, 182, 57]
在 C# 代码中。
所以我把它分成以下几部分:
var split = str.Split(':');
byte[] arr = new byte[6];
然后我需要某种 for
循环来将每个子字符串转换为 16 位整数。
我尝试了 Convert.ToInt8(split[i])
、split[i].ToChar(0,2)
、(char)split[i]
,但我不知道如何处理字符串字符并让它们成为一个 8 位数字。
给你
string mac = "b8:27:eb:97:b6:39";
byte[] arr = mac.Split(':').Select(x => Convert.ToByte(x, 16)).ToArray();
您需要使用.Net框架的Byte.Parse方法。
byte value = Byte.Parse(split[1], NumberStyles.AllowHexSpecifier);
我建议使用 PhysicalAddress class 而不是自己做。
它有一个解析方法:
PhysicalAddress.Parse("b8:27:eb:97:b6:39").GetAdressBytes();
但它会失败,因为该方法只接受 -
作为字节分隔符。一个简单的扩展方法可以提供帮助:
public static byte[] ToMACBytes(this string mac) {
if (mac.IndexOf(':') > 0)
mac = mac.Replace(':', '-');
return PhysicalAddress.Parse(mac).GetAddressBytes();
}
然后使用:
byte[] macBytes = "b8:27:eb:97:b6:39".ToMACBytes();
编辑:包括建议。