Для перетворення можна використовувати 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[]масив в an 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