gpt4 book ai didi

java - 使随机 mac 地址生成器仅生成单播 mac

转载 作者:搜寻专家 更新时间:2023-11-01 01:42:59 35 4
gpt4 key购买 nike

这是我的简单 mac 地址生成器:

private String randomMACAddress(){
Random rand = new Random();
byte[] macAddr = new byte[6];
rand.nextBytes(macAddr);

StringBuilder sb = new StringBuilder(18);
for(byte b : macAddr){
if(sb.length() > 0){
sb.append(":");
}else{ //first byte, we need to set some options
b = (byte)(b | (byte)(0x01 << 6)); //locally adminstrated
b = (byte)(b | (byte)(0x00 << 7)); //unicast

}
sb.append(String.format("%02x", b));
}


return sb.toString();
}

请注意我是如何设置和取消设置位的,以便生成单播 mac。但是它不起作用,我接受 mac 地址的自动程序返回错误,因为“这个 mac 地址是多播的”。

我做错了什么?

最佳答案

解决了...我刚刚做了

private String randomMACAddress(){
Random rand = new Random();
byte[] macAddr = new byte[6];
rand.nextBytes(macAddr);

macAddr[0] = (byte)(macAddr[0] & (byte)254); //zeroing last 2 bytes to make it unicast and locally adminstrated

StringBuilder sb = new StringBuilder(18);
for(byte b : macAddr){

if(sb.length() > 0)
sb.append(":");

sb.append(String.format("%02x", b));
}


return sb.toString();
}

关于java - 使随机 mac 地址生成器仅生成单播 mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24261027/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com