使随机mac地址生成器生成只是单播mac

Pha*_*ate 4 java networking mac-address

这是我简单的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();
}
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

Pha*_*ate 8

解决了...我刚刚做了

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();
}
Run Code Online (Sandbox Code Playgroud)