我正在寻找一种在C#中生成随机MAC数的方法。在这一点上,谷歌是相当薄弱的。
Thx很多
解决方案:
在Yahia的帮助下,我能够编写以下解决方案。又来了!
public static string GenerateMACAddress()
{
var sBuilder = new StringBuilder();
var r = new Random();
int number;
byte b;
for (int i = 0; i < 6; i++)
{
number = r.Next(0, 255);
b = Convert.ToByte(number);
if (i == 0)
{
b = setBit(b, 6); //--> set locally administered
b = unsetBit(b, 7); // --> set unicast
}
sBuilder.Append(number.ToString("X2"));
}
return sBuilder.ToString().ToUpper();
}
private static byte setBit(byte b, int BitNumber)
{
if (BitNumber < 8 && BitNumber > -1)
{
return (byte)(b | (byte)(0x01 << BitNumber));
}
else
{
throw new InvalidOperationException(
"Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
}
}
private static byte unsetBit(byte b, int BitNumber)
{
if (BitNumber < 8 && BitNumber > -1)
{
return (byte)(b | (byte)(0x00 << BitNumber));
}
else
{
throw new InvalidOperationException(
"Der Wert für BitNumber " + BitNumber.ToString() + " war nicht im zulässigen Bereich! (BitNumber = (min)0 - (max)7)");
}
}
发布于 2016-01-05 15:19:41
对于那些在为Wifi适配器生成新的MAC地址时遇到问题的人来说,这是一个小小的更新。您只需将MAC地址的第一个八位字节设置为"02",而不是通常设置为"00“。设置第一个八位字节"02“实际上会设置指示b2地址是本地管理的MAC位。
你可以在这里阅读更多关于它的内容:
http://blog.technitium.com/2011/05/tmac-issue-with-wireless-network.html
代码:
public static string GetRandomWifiMacAddress()
{
var random = new Random();
var buffer = new byte[6];
random.NextBytes(buffer);
buffer[0] = 02;
var result = string.Concat(buffer.Select(x => string.Format("{0}", x.ToString("X2"))).ToArray());
return result;
}
https://stackoverflow.com/questions/10161291
复制相似问题