Java 8: почему я не могу разобрать эту двоичную строку в long?
Короче говоря, я возился с некоторыми базовыми генетическими алгоритмами в Java. Я использовалlong
чтобы сохранить мои гены, но я использовал двоичные строки для удобства чтения при отладке. Я столкнулся со странной ситуацией, когда я не мог разобрать некоторые двоичные строки, которые начинаются с1
(Я не знаю, так ли это всегда, но похоже, что это соответствует строкам длиной 64 символа).
Я смог повторить это на следующем примере:
String binaryString = Long.toBinaryString(Long.MIN_VALUE);
long smallestLongPossibleInJava = Long.parseLong(binaryString, 2);
Который будет бросать и производить следующую трассировку стека:
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)
Учитывая, что у меня правильно отформатированная двоичная строка длиной шестьдесят четыре символа, почему я не могу разобрать некоторые строки в long? Большую часть времени мои строки генерируются случайным образом, но в приведенном выше примере это должно работать (видя, чтоLong.MIN_VALUE
определенно является действительным длинным в Java).