On pourrait utiliser le Buffer
qui sont fournis dans le cadre de l java.nio
pour effectuer la conversion.
Ici, la source byte[]
Le tableau a une longueur de 8, qui est la taille qui correspond à un long
valeur.
Tout d'abord, le byte[]
est enveloppé dans un ByteBuffer
et ensuite le [ByteBuffer.getLong
](http://java.sun.com/javase/6/docs/api/java/nio/ByteBuffer.html#getLong()) est appelée pour obtenir le long
valeur :
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
J'aimerais remercier dfa d'avoir signalé la ByteBuffer.getLong
dans les commentaires.
Bien que cela puisse ne pas être applicable dans cette situation, la beauté de la Buffer
sont liées à l'examen d'un tableau à valeurs multiples.
Par exemple, si nous avions un tableau de 8 octets, et que nous voulions le voir comme deux int
nous pourrions envelopper les valeurs byte[]
dans un tableau ByteBuffer
qui est considéré comme un IntBuffer
et 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
5 votes
Qu'entendez-vous par "valeur numérique" ? Les octets représentent-ils un nombre entier (long) ou à virgule flottante (double) en binaire ? Sont-ils la représentation en chaîne d'un nombre ? Ou encore une autre représentation ?
1 votes
C'était utile : stackoverflow.com/questions/5399798/
0 votes
NB : Le lien de TacB0sS était ce que je cherchais en fait - la conversion en avant et en arrière.
0 votes
new BigInteger(by).longValue()