Pode-se usar os programas Buffer
fornecidos como parte do java.nio
pacote para realizar a conversão.
Aqui, a byte[]
matriz de origem tem um comprimento de 8, que é o tamanho que corresponde a um long
valor.
Primeiro, a byte[]
matriz é envolvida em um ByteBuffer
e, em seguida, o ByteBuffer.getLong
método é chamado para obter o long
valor:
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.getLong
método nos comentários.
Embora possa não ser aplicável nesta situação, a beleza do Buffer
s 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 int
valores, poderíamos envolver a byte[]
matriz em um ByteBuffer
, que é visto como a, IntBuffer
e 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