Se pueden utilizar los Buffermensajes de correo electrónico que se proporcionan como parte del java.niopaquete para realizar la conversión.
Aquí, la byte[]matriz de origen tiene una longitud de 8, que es el tamaño que se corresponde con un longvalor.
Primero, la byte[]matriz se envuelve en a ByteBuffer, y luego ByteBuffer.getLongse llama al método para obtener el longvalor:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();
System.out.println(l);
Resultado
4
Me gustaría agradecer a dfa por señalar el ByteBuffer.getLongmétodo en los comentarios.
Aunque puede que no sea aplicable en esta situación, la belleza de Buffers viene con mirar una matriz con múltiples valores.
Por ejemplo, si tuviéramos una matriz de 8 bytes y quisiéramos verla como dos intvalores, podríamos envolver la byte[]matriz en an ByteBuffer, que se ve como a IntBuffery obtener los valores mediante 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);
Resultado:
1
4