NumberFormatException в InputString - PullRequest
       30

NumberFormatException в InputString

1 голос
/ 05 октября 2011

Пожалуйста, помогите мне решить это исключение: -

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
        System.out.println("length is " + strBinary.length()); 
        long intParse=Long.parseLong(strBinary, 2);
        System.out.println("int parsed is " +   intParse); 
        String hexString=Long.toHexString(intParse);
          System.out.println(hexString);

Вывод равен 72 вместе с NumberFormatException при синтаксическом анализе с использованием Long.parseLong .. Но до вчерашнего дня он работал абсолютно нормально для этого ввода также ... делает этоне имеет ничего общего с длиной ... Я на самом деле пытаюсь преобразовать строку в ее эквивалентное значение Hex.

Пожалуйста, помогите ....

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

A long может содержать 64 бита данных.Наибольшее значение, которое может представлять long, равно 9223372036854775807 (или 2 63 -1).Строка, которую вы пытаетесь проанализировать, намного больше , чем эта.

Вы могли бы быть в состоянии куда-то перейти, используя BigIntegerкласс, который может обрабатывать целочисленные значения произвольного размера (конечно, эффективно ограниченные памятью).

1 голос
/ 05 октября 2011

Длинна мала для твоих целей.Возможно, вы захотите использовать объект BigInteger, как этот

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
BigInteger bigInteger = new BigInteger(strBinary, 2);
System.out.println(bigInteger.longValue()); //This would give you the long value
System.out.println(bigInteger.toString(16)); //This would give you the hex string
...