Tengo una matriz de cadenas que representan números binarios (sin ceros a la izquierda) que quiero convertir a sus números de base 10 correspondientes. Considerar:
binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary 11 becomes integer 3 etc.
¿Cuál es la mejor forma de proceder? He estado explorando java.lang.number. * Sin encontrar un método de conversión directo. Integer.parseInt(b)
produce un número entero IGUAL a la cadena ... por ejemplo, 1001 se convierte en 1,001 en lugar de 9 ... y no parece incluir un parámetro para una base de salida. toBinaryString
hace la conversión en la dirección equivocada. Sospecho que tendré que hacer una conversión de varios pasos, pero parece que no puedo encontrar la combinación correcta de métodos o subclases. Tampoco estoy seguro de hasta qué punto los ceros iniciales o la falta de ellos serán un problema. ¿Alguien tiene buenas direcciones para señalarme?
Respuestas:
Usted necesita especificar la raíz . Hay una sobrecarga
Integer#parseInt()
que te permite.fuente
Esto podría funcionar:
fuente
for
bucle y el cálculo de la nuevaresult
variable no es correcto.funciona bien si se trata de números positivos, pero si necesita tratar con números con signo, es posible que deba firmar, extender su cadena y luego convertir a un Int
¡Espero que eso ayude!
fuente
fuente
¡Creo que estoy aún más aburrido! Se modificó la respuesta de Hassan para que funcione correctamente.
fuente
Para mí, obtuve NumberFormatException al tratar de lidiar con los números negativos. Usé lo siguiente para los números negativos y positivos.
fuente
Versión fija de Integer.parseInt (texto) de Java para trabajar con números negativos:
fuente
¡Amo los bucles! ¡Hurra!
Mientras que el bucle con acumulador, de izquierda a derecha (
l
no cambia):De derecha a izquierda con 2 vars de bucle, inspirado en Convert boolean to int en Java (absolutamente horrible):
Una implementación algo más razonable:
Una versión legible: p
fuente
Si le preocupa el rendimiento
Integer.parseInt()
yMath.pow()
es demasiado caro. Puede usar la manipulación de bits para hacer lo mismo dos veces más rápido (según mi experiencia):Dónde
Salida:
fuente