Można użyć Buffer
s dostarczonych jako część pakietu java.nio
do przeprowadzenia konwersji.
W tym przypadku tablica źródłowa byte[]
ma długość 8, która jest wielkością odpowiadającą wartości long
.
Pierwsza tablica byte[]
zapakowane jest w ByteBuffer
, a następnie metoda ByteBuffer.getLong
jest powołany do uzyskania wartości long
:
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 do wskazywania metody ByteBuffer.getLong
w komentarzach.
Mimo, że nie może mieć zastosowania w tej sytuacji, piękno Buffer
y wyposażone patrząc na tablicę z wielu wartości.
Na przykład, jeżeli miała tablicy 8 bajtów, i chce go zobaczyć w dwóch int
wartości, to może owijać tablicę byte[]
w sposób ByteBuffer
, który jest postrzegany jako IntBuffer
oraz uzyskania wartości, 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
Co masz na myśli przez "wartości liczbowej"? Czy bajty reprezentują liczbę całkowitą (długą) lub zmiennoprzecinkową (podwójną) w systemie binarnym? Czy są one ciągiem reprezentującym liczbę? A może kolejna reprezentacja? – starblue
To było pomocne: http://stackoverflow.com/questions/5399798/byte-array-and-intversion-in-java – TacB0sS
Uwaga: Połączenie TacB0sS było tym, czego szukałem - zarówno konwersjami do przodu, jak i do tyłu. –