Можно использовать Buffer
с, которые предоставляются как часть пакета java.nio
для выполнения преобразования.
Здесь исходный массив byte[]
имеет длину 8, что соответствует размеру long
.
Сначала массив byte[]
переносится в 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
в комментариях.
Хотя это может быть неприменимо в этой ситуации, прелесть Buffer
заключается в просмотре массива с несколькими значениями.
Например, если у нас есть 8-байтовый массив, и мы хотим просмотреть его как два значения int
, мы можем заключить массив byte[]
в ByteBuffer
, который рассматривается как 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