J'ai un tableau de 8 octets et je veux le convertir en sa valeur numérique correspondante.
par exemple
byte[] by = new byte[8]; // the byte array is stored in 'by'
// CONVERSION OPERATION
// return the numeric value
Je veux une méthode qui effectuera l'opération de conversion ci-dessus.
new BigInteger(by).longValue()
Réponses:
En supposant que le premier octet est l'octet le moins significatif:
Le premier octet est-il le plus significatif, alors c'est un peu différent:
Remplacez long par BigInteger , si vous avez plus de 8 octets.
Merci à Aaron Digulla pour la correction de mes erreurs.
la source
value += ((long)by[i] & 0xffL) << (8 * i);
On pourrait utiliser les
Buffer
s qui sont fournis dans le cadre dujava.nio
package pour effectuer la conversion.Ici, le
byte[]
tableau source a une de longueur 8, qui est la taille qui correspond à unelong
valeur.Tout d'abord, le
byte[]
tableau est encapsulé dans aByteBuffer
, puis laByteBuffer.getLong
méthode est appelée pour obtenir lalong
valeur:Résultat
Je tiens à remercier dfa pour avoir indiqué la
ByteBuffer.getLong
méthode dans les commentaires.Bien que cela ne soit peut-être pas applicable dans cette situation, la beauté du
Buffer
s 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
int
valeurs, nous pourrions envelopper lebyte[]
tableau dans unByteBuffer
, qui est considéré comme unIntBuffer
et obtenir les valeurs parIntBuffer.get
:Résultat:
la source
S'il s'agit d'une valeur numérique de 8 octets, vous pouvez essayer:
S'il s'agit d'un tampon de caractères UTF-8, vous pouvez essayer:
la source
Simplement, vous pouvez utiliser ou faire référence à guava lib fournie par google, qui propose des méthodes utilitaires pour la conversion entre un tableau long et un tableau d'octets. Mon code client:
la source
Vous pouvez également utiliser BigInteger pour les octets de longueur variable. Vous pouvez le convertir en Long, Integer ou Short, selon vos besoins.
ou pour désigner la polarité:
la source
Code de conversion Java complet pour tous les types primitifs vers / depuis les tableaux http://www.daniweb.com/code/snippet216874.html
la source
Chaque cellule du tableau est traitée comme un entier non signé:
la source