Pode-se usar os programas Bufferfornecidos como parte do java.niopacote para realizar a conversão.
Aqui, a byte[]matriz de origem tem um comprimento de 8, que é o tamanho que corresponde a um longvalor.
Primeiro, a byte[]matriz é envolvida em um ByteBuffere, em seguida, o ByteBuffer.getLongmétodo é chamado para obter o 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
Gostaria de agradecer ao dfa por apontar o ByteBuffer.getLongmétodo nos comentários.
Embora possa não ser aplicável nesta situação, a beleza do Buffers vem com a observação de uma matriz com vários valores.
Por exemplo, se tivéssemos uma matriz de 8 bytes e quiséssemos vê-la como dois intvalores, poderíamos envolver a byte[]matriz em um ByteBuffer, que é visto como a, IntBuffere obter os valores por 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