J'ai un tableau de chaînes qui représentent des nombres binaires (sans zéros non significatifs) que je veux convertir en leurs nombres de base 10 correspondants. Considérer:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Quelle est la meilleure façon de procéder? J'ai exploré java.lang.number. * Sans trouver de méthode de conversion directe. Integer.parseInt(b)
donne un entier EQUAL à la chaîne ... par exemple, 1001 devient 1 001 au lieu de 9 ... et ne semble pas inclure de paramètre pour une base de sortie. toBinaryString
fait la conversion dans le mauvais sens. Je soupçonne que j'aurai besoin de faire une conversion en plusieurs étapes, mais je n'arrive pas à trouver la bonne combinaison de méthodes ou de sous-classes. Je ne suis pas non plus sûr de savoir dans quelle mesure les zéros non significatifs ou leur absence seront un problème. Quelqu'un a-t-il de bonnes directions pour me diriger?
Réponses:
Vous devez spécifier la base . Il y a une surcharge
Integer#parseInt()
qui vous le permet.la source
Cela pourrait fonctionner:
la source
for
boucle et le calcul de la nouvelleresult
variable n'est pas correct.fonctionne très bien si vous avez affaire à des nombres positifs, mais si vous avez besoin de traiter des nombres signés, vous devrez peut-être signer étendre votre chaîne, puis convertir en un Int
J'espère que cela aide!
la source
la source
Je suppose que je m'ennuie encore plus! Modification de la réponse de Hassan pour qu'elle fonctionne correctement.
la source
Pour moi, j'ai obtenu NumberFormatException en essayant de gérer les nombres négatifs. J'ai utilisé ce qui suit pour les nombres négatifs et positifs.
la source
Correction de la version de Integer.parseInt (texte) de Java pour travailler avec des nombres négatifs:
la source
J'adore les boucles! Yay!
En boucle avec accumulateur, de gauche à droite (
l
ne change pas):De droite à gauche avec 2 variables de boucle, inspirées de Convert boolean to int en Java (absolument horrible):
Une implémentation un peu plus raisonnable:
Une version lisible: p
la source
Si vous êtes préoccupé par les performances
Integer.parseInt()
et que vousMath.pow()
êtes trop cher. Vous pouvez utiliser la manipulation de bits pour faire la même chose deux fois plus vite (d'après mon expérience):Où
Production:
la source