Aby wykonać konwersję, można użyć Buffer
s, które są dostarczane jako część java.nio
pakietu.
W tym przypadku byte[]
tablica źródłowa ma długość 8, czyli rozmiar odpowiadający long
wartości.
Najpierw byte[]
tablica jest zawijana a ByteBuffer
, a następnie ByteBuffer.getLong
wywoływana jest metoda w celu uzyskania long
wartoś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.getLong
metody w komentarzach.
Chociaż może to nie mieć zastosowania w tej sytuacji, piękno tych funkcji Buffer
polega na spojrzeniu na tablicę z wieloma wartościami.
Na przykład, gdybyśmy mieli 8-bajtową tablicę i chcielibyśmy zobaczyć ją jako dwie int
wartości, moglibyśmy zawinąć byte[]
tablicę w an ByteBuffer
, która jest wyświetlana jako a IntBuffer
i 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