2014-11-16 1 views
0

У меня есть следующая функция для преобразования массива байтов в Hex в целочисленном формате.массив байтов в Hex (в формате int)

private static int byteArray2Int(final byte[] hash) { 
     Formatter formatter = new Formatter(); 
     for (byte b : hash) { 
      formatter.format("%02x", b); 
     } 

     String str = formatter.toString(); 
     int hex = Integer.parseInt(str, 16); //number format exception 

     return hex; 
    } 

-

И я получаю ниже ошибки. Я понимаю, что значение formatter уже находится в шестнадцатеричном виде, но я хочу сохранить его в целочисленном формате.

Как мне это сделать, пожалуйста?

Exception in thread "main" java.lang.NumberFormatException: For input string: "202e4724bb138c1c60470adb623ac932" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
+0

'202e4724bb138c1c60470adb623ac932' не является' int', поэтому вы получаете это исключение. – Maroun

ответ

1

Используйте BigInteger, как показано ниже, вместо того, чтобы пытаться сохранить его в int, поскольку ваша строка слишком длинная, чтобы соответствовать внутри диапазона int.

String hex = "202e4724bb138c1c60470adb623ac932"; 
BigInteger bi = new BigInteger(hex, 16); 
System.out.println(bi); 
0

"202e4724bb138c1c60470adb623ac932" слишком большой, чтобы поместиться в к Int или долго. Для этого потребуется 16 байт (если я правильно подсчитал).

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

  • Нет связанных вопросов^_^