On pourrait utiliser les Buffers qui sont fournis dans le cadre du java.niopackage pour effectuer la conversion.
Ici, le byte[]tableau source a une de longueur 8, qui est la taille qui correspond à une longvaleur.
Tout d'abord, le byte[]tableau est encapsulé dans a ByteBuffer, puis la ByteBuffer.getLongméthode est appelée pour obtenir la longvaleur:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();
System.out.println(l);
Résultat
4
Je tiens à remercier dfa pour avoir indiqué la ByteBuffer.getLongméthode dans les commentaires.
Bien que cela ne soit peut-être pas applicable dans cette situation, la beauté du Buffers vient de regarder un tableau avec plusieurs valeurs.
Par exemple, si nous avions un tableau de 8 octets et que nous voulions le voir sous forme de deux intvaleurs, nous pourrions envelopper le byte[]tableau dans un ByteBuffer, qui est considéré comme un IntBufferet obtenir les valeurs par 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);
Résultat:
1
4