Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 长mac地址回字节数组_Java - Fatal编程技术网

Java 长mac地址回字节数组

Java 长mac地址回字节数组,java,Java,我有一个方法,它从字符串中获取mac地址并将其转换为字节数组。然后我有另一个方法,获取字节数组并将其转换为long。如下 final long address = ((long)addr[5] & 0xff) + (((long)addr[4] & 0xff) << 8) + (((long)addr[3] & 0xff) << 16) + (((long)addr[2] & 0xff) << 24

我有一个方法,它从字符串中获取mac地址并将其转换为字节数组。然后我有另一个方法,获取字节数组并将其转换为long。如下

final long address = ((long)addr[5] & 0xff) 
    + (((long)addr[4] & 0xff) << 8) 
    + (((long)addr[3] & 0xff) << 16) 
    + (((long)addr[2] & 0xff) << 24) 
    + (((long)addr[1] & 0xff) << 32) 
    + (((long)addr[0] & 0xff) << 40);

但是,它不能正确地转换回。

您是按相反的顺序分配的

buffer[currentOffset++] = (byte) (l >> 40);
buffer[currentOffset++] = (byte) (l >> 32);
buffer[currentOffset++] = (byte) (l >> 24);
buffer[currentOffset++] = (byte) (l >> 16);
buffer[currentOffset++] = (byte) (l >> 8);
buffer[currentOffset++] = (byte) l;

用谷歌番石榴(google Guava)的术语来说,它只是一条直线:

toByteArray(getMacAddress())

请注意,该类型包含执行类似操作的方法。
buffer[currentOffset++] = (byte) (l >> 40);
buffer[currentOffset++] = (byte) (l >> 32);
buffer[currentOffset++] = (byte) (l >> 24);
buffer[currentOffset++] = (byte) (l >> 16);
buffer[currentOffset++] = (byte) (l >> 8);
buffer[currentOffset++] = (byte) l;