长mac地址返回字节数组

时间:2011-05-21 08:54:17

标签: 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) 
    + (((long)addr[1] & 0xff) << 32) 
    + (((long)addr[0] & 0xff) << 40);

但是我无法弄清楚如何将这个长时间转换回字节数组进行存储。

我试过了

/* long l = mac in long format address | mac addresses only take 6 bytes */
buffer[currentOffset++] = (byte)l;
buffer[currentOffset++] = (byte)(l >> 8);
buffer[currentOffset++] = (byte)(l >> 16);
buffer[currentOffset++] = (byte)(l >> 24);
buffer[currentOffset++] = (byte)(l >> 32);
buffer[currentOffset++] = (byte)(l >> 40);

虽然它没有正确转换回来。

2 个答案:

答案 0 :(得分:2)

您正在以反向顺序进行分配。

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;

答案 1 :(得分:0)

在谷歌番石榴术语中,它只是一个班轮:

Longs.toByteArray(getMacAddress())