Eu tenho uma matriz de Strings que representam números binários (sem zeros à esquerda) que desejo converter em seus números de base 10 correspondentes. Considerar:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
Qual é a melhor maneira de proceder? Tenho explorado java.lang.number. * Sem encontrar um método de conversão direta. Integer.parseInt(b)
retorna um inteiro IGUAL à String ... por exemplo, 1001 se torna 1.001 em vez de 9 ... e não parece incluir um parâmetro para uma base de saída. toBinaryString
faz a conversão na direção errada. Suspeito que precisarei fazer uma conversão em várias etapas, mas não consigo encontrar a combinação certa de métodos ou subclasses. Também não tenho certeza de até que ponto os zeros à esquerda ou a falta deles serão um problema. Alguém tem boas instruções para me apontar?
Respostas:
Você precisa especificar a raiz . Há uma sobrecarga de
Integer#parseInt()
que permite.fonte
Isso pode funcionar:
fonte
for
loop e cálculo da novaresult
variável não está correto.funciona bem se você estiver lidando com números positivos, mas se você precisa lidar com números com sinais, você pode precisar assinar, estender sua string e então converter para um Int
Espero que ajude!
fonte
fonte
Acho que estou ainda mais entediado! Resposta de Hassan modificada para funcionar corretamente.
fonte
Para mim, obtive NumberFormatException ao tentar lidar com os números negativos. Usei o seguinte para os números negativos e positivos.
fonte
Versão corrigida de Integer.parseInt (texto) de java para trabalhar com números negativos:
fonte
Eu amo loops! Yay!
While loop com acumulador, da esquerda para a direita (
l
não muda):Da direita para a esquerda com 2 vars de loop, inspirados em Convert boolean to int em Java (absolutamente horrível):
Uma implementação um pouco mais razoável:
Uma versão legível: p
fonte
Se você está preocupado com o desempenho
Integer.parseInt()
eMath.pow()
são muito caros. Você pode usar a manipulação de bits para fazer a mesma coisa duas vezes mais rápido (com base na minha experiência):Onde
Resultado:
fonte