8
votes

Java byte.parsebyte () erreur ()

Je vais avoir une petite erreur dans mon code que je ne peux pas pour la vie de moi.

J'ai une gamme de chaînes qui représentent des données binaires (après les convertir de Hex), par exemple: Un indice est 1011 et un autre est de 11100. Je passe par le tableau et le pad de chaque index avec 0 de manière à ce que chaque indice soit huit octets. Lorsque j'essaie de convertir ces représentations en octets réels, je reçois une erreur lorsque j'essaie d'analyser "11111111" L'erreur que je reçois est: xxx

Voici un extrait: xxx


1 commentaires

Byte S uniquement autoriser les numéros de la plage de -128 à 127. J'utiliserais un int au lieu de la portée de -2,1 milliards à 2,1 milliards.


3 Réponses :


26
votes

n'est pas le problème ici que octet est un type signé, ses valeurs valides sont donc de -128 ... 127? Si vous l'analysez comme un int (en utilisant integer.parseint () ), il devrait fonctionner.

Au fait, vous n'avez pas à renvoyer le numéro avec des zéros non plus.

Une fois que vous avez analysé votre chaîne binaire dans un int, vous pouvez la jeter à un octet, mais la valeur sera toujours traitée comme signée, donc binaire 11111111 deviendra int 255 Tout d'abord, puis octet -1 après la distribution.


0 commentaires

1
votes

Eh bien, huit son est 255, et selon Java.Lang.Byte, le max_value est 2 ^ 7 - 1 ou positif 127.

Donc, votre code échouera parce que votre numéro est trop grand. Le premier bit est réservé au panneau positif et négatif.

Selon Paysbyte


0 commentaires

1
votes

octet ne permet que les numéros de la plage de -128 à 127. J'utiliserais un int à la place, qui détient des nombres compris entre -2,1 milliard de 2,1 milliards.


0 commentaires