При выполнении Integer.parseInt(x, 2)
не учитывается бит знака.
Возьмите этот пример,
System.out.println(Integer.toBinaryString(-1)); // This output's "11111111111111111111111111111111"
System.out.println(Integer.parseInt(Integer.toBinaryString(-1), 2));
Вторая линия бросает,
Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111111111"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at com.Test.main(Test.java:116)
У меня есть сценарий для преобразования Integer
в Binary String
, а затем обратно.
Есть ли способ позволить методу parseInt()
проанализировать его с битом знака?
РЕДАКТИРОВАТЬ:
Ответ в этом вопросе имеет хакерское решение для использования метода parseXX()
на большем тип данных (например: Integer.parseInt(), если нужен короткий, или длинный, если нужен int). Это не сработает, если кто-то пытается проанализировать отрицательное значение long (поскольку нет большего типа, чем long).
Но ответ @Tagir, кажется, работает для всех типов. Так что оставь этот вопрос открытым.
int
илиInteger
, поэтому было далеко не ясно, что все случаи относятся к более крупным типам. И это, безусловно, действительно работает во всех случаях, охватываемых вашей фразой в скобках. - person ajb   schedule 18.08.2015