У меня есть массив строк, представляющих двоичные числа (без начальных нулей), которые я хочу преобразовать в соответствующие им числа с основанием 10. Рассматривать:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Как лучше всего продолжить? Я изучал java.lang.number. *, Но не нашел метода прямого преобразования. Integer.parseInt(b)
дает целое число EQUAL для String ... например, 1001 становится 1001 вместо 9 ... и, похоже, не включает параметр для выходной базы. toBinaryString
делает преобразование в неправильном направлении. Я подозреваю, что мне нужно выполнить многоэтапное преобразование, но я не могу найти правильную комбинацию методов или подклассов. Я также не уверен, в какой степени начальные нули или их отсутствие будут проблемой. У кого-нибудь есть хорошие направления, чтобы указать мне?
Ответы:
Вам нужно указать систему счисления . Есть перегрузка,
Integer#parseInt()
которая позволяет вам.источник
Это может сработать:
источник
for
цикл и вычисление новойresult
переменной некорректно.отлично работает, если вы имеете дело с положительными числами, но если вам нужно иметь дело с числами со знаком, вам может потребоваться подписать расширение вашей строки, а затем преобразовать в Int
Надеюсь, это поможет!
источник
источник
Думаю, мне еще больше скучно! Изменен ответ Хасана для правильной работы.
источник
Для меня я получил NumberFormatException при попытке справиться с отрицательными числами. Я использовал следующее для отрицательных и положительных чисел.
источник
Исправлена версия Java Integer.parseInt (text) для работы с отрицательными числами:
источник
Обожаю петли! Ура!
Цикл while с аккумулятором слева направо (
l
не меняется):Справа налево с двумя переменными цикла, вдохновленными Convert boolean to int в Java (абсолютно ужасно):
Несколько более разумная реализация:
Читаемая версия: p
источник
Если вы беспокоитесь о производительности
Integer.parseInt()
иMath.pow()
слишком дороги. Вы можете использовать битовые манипуляции, чтобы делать то же самое в два раза быстрее (исходя из моего опыта):куда
Вывод:
источник