Функциональность уже реализована в API. Оберните байтовый массив в ByteBuffer
и используйте ByteBuffer.putLong
и ByteBuffer.getLong
:
import java.nio.*;
import java.util.Arrays;
public class Test {
public static void main(String... args) throws Exception {
long[] longArray = { 1234, 2345, 3456 };
// Longs to bytes
byte[] bytes = new byte[longArray.length * 8];
ByteBuffer buf = ByteBuffer.wrap(bytes);
for (long l : longArray)
buf.putLong(l);
System.out.println(Arrays.toString(bytes));
// Bytes to longs
ByteBuffer buf2 = ByteBuffer.wrap(bytes);
long[] longs = new long[bytes.length / 8];
for (int i = 0; i < longs.length; i++)
longs[i] = buf2.getLong(i*8);
System.out.println(Arrays.toString(longs));
}
}
Выход:
[0, 0, 0, 0, 0, 0, 4, -46, 0, 0, 0, 0, 0, 0, 9, 41, 0, 0, 0, 0, 0, 0, 13, -128]
[1234, 2345, 3456]