Я пытаюсь преобразовать двоичную строку 1111111 11111111 11111111 11111111
(как значение знака 32-разрядного номера) в int
, где ответ должен быть -2147483648
, он возвращает -1073741822
. Есть ли способ адаптировать значение min и max при преобразовании строки в int, чтобы получить правильный ответ?Установка максимального значения для преобразования строки в двоичный код
public static int binaryStringToInt(String s) {
int result = 0;
boolean negative = false;
int i = 0,
max = s.length();
int radix = 2;
int digit;
// int maxLimit = 2147483647 ?
// int minLimit = -2147483648 ?
if (s.charAt(0) == '1') {
negative = true;
i++;
}
if (i < max) {
digit = Character.digit(s.charAt(i++),radix);
result = -digit;
}
while (i < max) {
digit = Character.digit(s.charAt(i++),radix);
result *= radix;
result -= digit;
}
if (negative) return result;
return -result;
}
Спасибо!
получить двоичное строковое представление Integer.MAX – Cruncher
В подсказке. .. Ответ, который вы получаете, составляет почти половину того, что должно быть. –
Бинарное представление '-2147483648' -' 1000_0000_0000_0000_0000_0000_0000_0000', поэтому я не уверен, что понимаю, чего вы пытаетесь достичь. – ajb