我有一个从字符串中获取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);
虽然它没有正确转换回来。
答案 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())