Comment faire pour convertir un tableau d'octets à sa valeur numérique (Java)?
J'ai un 8 tableau d'octets, et je tiens à les convertir à sa correspondante de la valeur numérique.
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 vous permettra d'effectuer ci-dessus opération de conversion.
- Qu'entendez-vous par "valeur numérique"? Ne les octets représentent un nombre entier (long) ou nombre à virgule flottante (double) en binaire? Ils sont la représentation de chaîne d'un nombre? Ou encore une autre représentation?
- Cela a été utile: stackoverflow.com/questions/5399798/...
- NB: TacB0sS lien était ce que j'étais en fait à la recherche pour - à la fois en avant et en arrière de conversion.
new BigInteger(by).longValue()
Vous devez vous connecter pour publier un commentaire.
En supposant que le premier octet est l'octet le moins significatif:
Est le premier octet le plus significatif, c'est un peu différent:
Remplacer longue avec BigInteger, si vous avez plus de 8 octets.
Grâce à Aaron Digulla pour la correction de mes erreurs.
value += ((long)by[i] & 0xffL) << (8 * i);
On pourrait utiliser la
Tampon
s qui sont fournis dans le cadre de lajava.nio
package pour effectuer la conversion.Ici, la source
byte[]
tableau de longueur 8, qui est la taille qui correspond à unlong
valeur.Tout d'abord, le
byte[]
tableau est enveloppé dans unByteBuffer
, puis leByteBuffer.getLong
méthode est appelée pour obtenir lelong
valeur:Résultat
Je tiens à remercier tfd pour souligner la
ByteBuffer.getLong
méthode dans les commentaires.Bien qu'il peut ne pas être applicable dans cette situation, la beauté de la
Buffer
s viennent avec, en regardant un tableau avec plusieurs valeurs.Par exemple, si nous avons eu un 8 tableau d'octets, et nous avons voulu le voir comme deux
int
valeurs, nous avons pu envelopper lebyte[]
tableau dans uneByteBuffer
, qui est considérée comme unIntBuffer
et obtenir les valeurs parIntBuffer.get
:Résultat:
Si c'est un 8 octets de valeur numérique, vous pouvez essayer:
Si c'est un caractère UTF-8 de la mémoire tampon, vous pouvez essayer:
Simplement, vous pouvez utiliser ou de se référer à goyave lib fourni par google, qui offre utiliy méthodes pour la conversion entre le long et le tableau d'octets. Mon code client:
Vous pouvez également utiliser BigInteger pour la variable d'octets de longueur. Vous pouvez le convertir en Long, Entier ou Court, selon ce qui convient à vos besoins.
ou pour désigner la polarité:
Java complet convertisseur de code pour tous les types primitifs à/à partir de baies
http://www.daniweb.com/code/snippet216874.html
Chaque cellule de la matrice est considérée comme unsigned int: