Java 8: Por que não consigo analisar essa sequência binária em um longo?
Para encurtar a história, eu estava brincando com algumas coisas básicas sobre algoritmos genéticos em Java. Eu estava usando umlong
para armazenar meus genes, mas eu estava usando cadeias binárias para facilitar a leitura durante a depuração. Me deparei com uma situação estranha em que não conseguia analisar algumas seqüências binárias que começam com um1
(Não sei se esse é sempre o caso, mas parece ser consistente com cadeias de caracteres de 64 caracteres).
Consegui replicar isso com o seguinte exemplo:
String binaryString = Long.toBinaryString(Long.MIN_VALUE);
long smallestLongPossibleInJava = Long.parseLong(binaryString, 2);
Que lançará e produzirá o seguinte rastreamento de pilha:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1000000000000000000000000000000000000000000000000000000000000000"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:592)
at com.company.Main.main(Main.java:25)
Como tenho uma cadeia binária formatada corretamente de sessenta e quatro caracteres, por que não consigo analisar algumas cadeias por muito tempo? Na maioria das vezes, minhas seqüências de caracteres são geradas aleatoriamente, mas no exemplo acima isso deve funcionar (vendo comoLong.MIN_VALUE
é definitivamente um período válido em Java).