Для выполнения преобразования можно использовать Buffer
s, которые предоставляются как часть 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
метод в комментариях.
Хотя это может быть неприменимо в этой ситуации, красота Buffer
s заключается в просмотре массива с несколькими значениями.
Например, если у нас есть 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