随机生成 MAC 全局单播地址(C#,.Net 6+)

/// <summary>获取随机生成的MAC全局单播地址</summary>
/// <param name="separator">分隔符。默认为“-”符号</param>
/// <param name="upper">返回的十六进制值是否大写。默认为 false,即小写</param>
public static string GetRandomMacAddress(string separator = "-", bool upper = false)
{
	var b = new byte[6];
	Random.Shared.NextBytes(b);
	
	// 确保是全局单播地址
	// MAC地址第 7 位为 0 是全局地址,为 1 是本地地址
	// MAC地址第 8 位为 0 是单播地址,为 1 是组播地址。全F的广播地址也是组播的一种
	// 7 和 8 位都为 0 则是 4 的倍数
	if (b[0] % 4 != 0) b[0] <<= 2; //左移两位

	return String.Join(separator, b.Select(x => x.ToString(upper ? "X2" : "x2")).ToArray());
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值