Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Leber en 1 Octubre 2007, 20:21 pm



Título: Cambiar base en javascript
Publicado por: Leber en 1 Octubre 2007, 20:21 pm
Muy buenas, señores:

La duda va relacionada con una aplicacion que quiero hacer, la cual deberia cambiar un numero a la base que le dijeses: octal, decimal o hexadecimal.

Hice el archivo html,el cual te pidiera el numero, y la base. A este archivo HTML, lo enlazo con un archivo .js, el cual se encarga de elegir la base, mediante un switch, y realiza las operaciones. Luego en el html llamo la funcion dentro del script.

La duda viene a que no se como cambiar de base los numeros, he buscado bastante, y encontre el toString que no se muy bien si lo podria usar para estos fines.

¿Podrian echarme una mano?

Gracias de antemano


Título: Re: Cambiar base en javascript
Publicado por: Ragnarok en 1 Octubre 2007, 22:14 pm
Empieza por algo sencillo, como cambiar de base entre octal y hexadecimal. Busca información y haz preguntas más concretas.

toString no tengo ni idea de para qué querrías usarlo, a parte de para dar una vuelta convirtiendo todo a string como paso intermedio que casi complica más las cosas de lo que pudiera facilitarlas.


Título: Re: Cambiar base en javascript
Publicado por: sch3m4 en 1 Octubre 2007, 23:07 pm
Es mejor que empieces con lo que te dice Ragnarok

Solo tienes que saber pasar de base 10 a base N, y de base N a base 10, ya que para pasar de base M a base N, has de pasar el numero expresado en base M a base 10, y luego pasarlo a base N.





Título: Re: Cambiar base en javascript
Publicado por: Ragnarok en 2 Octubre 2007, 07:12 am
En realidad para pasar de octal a hexadecimal no necesita pasar a decimal para nada, creo que le complica las cosas bastante a menos que utilice parseInt(str,base), que no sé si podrá usar.

De lo que me acabo de dar cuenta es de que toString sí puede ser útil, es más, en hexadecimal sólo va a poder representarlo en forma de strings.


Título: Re: Cambiar base en javascript
Publicado por: sirdarckcat en 2 Octubre 2007, 07:47 am
Hola

Para pasar de hexadecimal a decimal, es asi:
Código
  1. decimal=eval("0x"+hex);

Para pasar de octal a decimal, es asi:
Código
  1. decimal=eval("0"+octal);

Para pasar de decimal a hexadecimal numeros entre 0 y 4095 puedes hacerlo asi:
Código
  1. hex=escape(String.fromCharCode((1<<12)+decimal)).slice(3)//donde cambias decimal por tu numero.

Para hacer el programa completo sinembargo, tendrás que hacerlo con divisiones, modulos, etc..

Lo que te mostre son truquitos que he usado para acelerar este proceso xD, pero debes hacer validaciones antes (una simle regexp).

Saludos!!


Título: Re: Cambiar base en javascript
Publicado por: Leber en 2 Octubre 2007, 20:15 pm
Señores, les pido disculpas, me lei y ademas fuy muy poco conciso, llevo la tarde dandole vueltas al tema, y escribiendo en un papel lo que quiero hacer, y bueno empeze a sentarme ahora mismo.

Ahora sere más explicito:


Veran, la aplicacion pide dos numeros:

n1=prompt('Da numero: ');
base=prompt('Da la base: ');

La base es de 1 hasta 16, lo que hace la aplicacion es hacer el resto, es decir, el en switch tengo, por ejemplo en el case 3:


case '3': document.write(parseInt(n1) % parseInt(base))

Aqui se hace el resto, sino es 0, he creado un array, el cual manejo como recoger de nº, es decir, si se hace el resto de la division de 9/2, da "1", ese "1" lo envio a la posicion 0 del array, el cual dispone de 20 compartimentos.


Si no es 0, como dije, hago un if, el cual si el resultado no es 0, se le asigna al array[0] el resultado que haya dado, y continua haciendo la operacion hasta que no sea posible ir mas alla, o sencillamente que no se pueda.

Por ejemplo en la division de 9/2, al dar resto 1, me pasaria , ya que estoy diviendo entre 2, y este ya es un numero mas grande que "1". Estoy usando la sentencia IF para esto, y que a final, me visualize el array entero, es decir, quiza el resultado despues de varias divisiones hasta que no se ha podido mas ha dado: "01001"

No se si estoy abusando demasiado del IF o me estoy complicando la vida y hay un modo mas sencillo de hacerlo. Tambien habia pensado en el while, pero bien.   Bueno, no quiero darles mas la tabarra, gracias por haber respondido antes y por no haber sido mas preciso.

Saludos


Título: Re: Cambiar base en javascript
Publicado por: Ragnarok en 2 Octubre 2007, 22:26 pm
No sé los demás, pero yo me he hecho un lío, está bien describir el problema, la solución, los errores... pero describir el código es demasiado.

Mira que bonito lo ha puesto sirdarckcat con sus colores y todo.