2016-04-04 4 views
0

J'ai ce problème lorsque j'ai une chaîne Java contenant des chiffres binaires qui ne peut pas être convertie en équivalent décimal.NumberFormatException: int invalide suite à la conversion d'une chaîne contenant un digita binaire en décimal

L'erreur dans le titre de la question est à la suite du code ci-dessous:

int decimalValue = Integer.parseInt("001001000110000111001001000111000110001010001011",2); 
     System.out.println("Ciphertext :\t"+decimalValue); 

Cependant quand je teste avec des chaînes plus petites de chiffre binaire comme « 1101 », le programme fonctionne très bien. Est-ce que je fais quelque chose de mal ici ?

+1

Les entiers ont une valeur maximale. Je suppose que vous dépassez cette valeur. C'est simplement une supposition, cependant. – Gendarme

+0

comment pourriez-vous suggérer je continue avec BigInteger? Pourriez-vous mettre une démo poc si cela fonctionne je marquerai le vôtre comme réponse! Merci ! –

Répondre

3

Oui. Vous essayez d'analyser plus de 32 bits en int. Vous avez besoin d'un long (en fonction de votre entrée) quelque chose comme

long decimalValue = Long.parseLong(
     "001001000110000111001001000111000110001010001011", 2); 

qui est 40002404508299 (Integer.MAX_VALUE est 2147483647).

+1

'Integer.MAX_MAX_VALUE' est une faute de frappe je pense. – Gendarme

+0

@Gendarme Typo fixe. Merci. –