Java 长mac地址回字节数组
我有一个方法,它从字符串中获取mac地址并将其转换为字节数组。然后我有另一个方法,获取字节数组并将其转换为long。如下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
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;