Aby wykonać konwersję, można użyć Buffers, które są dostarczane jako część java.niopakietu.
W tym przypadku byte[]tablica źródłowa ma długość 8, czyli rozmiar odpowiadający longwartości.
Najpierw byte[]tablica jest zawijana a ByteBuffer, a następnie ByteBuffer.getLongwywoływana jest metoda w celu uzyskania longwartości:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();
System.out.println(l);
Wynik
4
Chciałbym podziękować dfa za wskazanie ByteBuffer.getLongmetody w komentarzach.
Chociaż może to nie mieć zastosowania w tej sytuacji, piękno tych funkcji Bufferpolega na spojrzeniu na tablicę z wieloma wartościami.
Na przykład, gdybyśmy mieli 8-bajtową tablicę i chcielibyśmy zobaczyć ją jako dwie intwartości, moglibyśmy zawinąć byte[]tablicę w an ByteBuffer, która jest wyświetlana jako a IntBufferi uzyskać wartości przez 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);
Wynik:
1
4