作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是我的简单 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/
我是一名优秀的程序员,十分优秀!