Для выполнения преобразования можно использовать Buffers, которые предоставляются как часть java.nioпакета.
Здесь исходный byte[]массив имеет длину 8, которая соответствует размеру longзначения.
Сначала byte[]массив оборачивается в a ByteBuffer, а затем ByteBuffer.getLongвызывается метод для получения longзначения:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();
System.out.println(l);
Результат
4
Я хотел бы поблагодарить dfa за указание на ByteBuffer.getLongметод в комментариях.
Хотя это может быть неприменимо в этой ситуации, красота Buffers заключается в просмотре массива с несколькими значениями.
Например, если у нас есть 8-байтовый массив, и мы хотим просмотреть его как два intзначения, мы могли бы обернуть byte[]массив в ByteBuffer, который рассматривается как a, IntBufferи получить значения следующим образом IntBuffer.get:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 1, 0, 0, 0, 4});
IntBuffer ib = bb.asIntBuffer();
int i0 = ib.get(0);
int i1 = ib.get(1);
System.out.println(i0);
System.out.println(i1);
Результат:
1
4