2015-06-11 1 views
1

Я пытаюсь проанализировать потенциальное Длинное значение из двоичной строки, но при этом я все равно получаю сообщение об ошибке.Long.parseLong Error

public String func1(String B, String C, String D) 
{ 
    long b = Long.parseLong(B, 2); 
    long c = Long.parseLong(C, 2); 
    long d = Long.parseLong(D, 2); 

    String value = Long.toString((b & c) | (b & d), 2); 
    return value; 
} 

Exception in thread "main" java.lang.NumberFormatException: 
For input string: "1010101010101010101010101010101010101010/*....*/10101011" 
    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Long.parseLong(Unknown Source) 
    ... 

Может ли это объяснить это? Спасибо!

+1

Ну, как долго фактическая строка? (Я предполагаю, что он не имеет на самом деле * /*...*/ 'in?) –

+0

Для целей тестирования строка имеет длину 32 бита, но она может превышать ее. – BonBon

+0

Но вы действительно подтвердили, что длина строки не больше 64 (63, если первый символ равен 1) и что символы действительны (нули и единицы, необязательный минус)? – RealSkeptic

ответ

2

Постоянного проведения максимального значения долго может иметь, 2^63 - 1.

Итак, последняя строка которой вы можете преобразовать в Long с 2 радиксом является: "111111111111111111111111111111111111111111111111111111111111111"

Если вы попробуете значение синтаксиса больше, чем оно, вы получите java.lang.NumberFormatException

Смежные вопросы