Hoy preparé una página sobre conversiones numéricas...
Algunas veces contesté algo al respecto, y veo que en las FAQs hay poca información (pueden corregirme si no es así)
La página es pequeña así que voy a poner el código:
Código PHP:
<html>
<head>
<script>
var valoresHexa = "0123456789ABCDEF";
function aHexa(n) {
if (isNaN(n)) return false;
if (n < 16) return valoresHexa.charAt(n);
else return aHexa(n / 16) + valoresHexa.charAt(n % 16);
}
function aDecimal(hex) {
len = hex.length;
if (len == 0) return false;
var n = 0;
var d;
for (var i = 0; i < len; i ++) {
d = valoresHexa.indexOf(hex.charAt(i));
if (d == -1) return false;
n = n * 16 + valoresHexa.indexOf(hex.charAt(i));
}
return n;
}
function aBinario(n) {
if (n < 2) return n;
else return aBinario(parseInt(n / 2)) * 10 + (n % 2);
}
function CambioBase(_n, _b) {
var n = parseInt(_n);
var b = parseInt(_b);
if (isNaN(n) || isNaN(b)) return false;
if (n < b) return n;
else return (CambioBase(parseInt(n / b), b)) * 10 + (n % b);
}
function Cualquiera(n) {
do {
base = prompt("Introduzca la Base");
} while (isNaN(base))
if (base > 9 || base == 0) return "base no implementada";
else return CambioBase(n, base);
}
</script>
<head>
<body>
<form name="convertir">
<label>Introduzca el valor a convertir:</label>
<input type=text name=entrada>
<label>Resultado:</label>
<input type=text name=salida><br>
<input type=button name=actuar value="Decimal a Hexa"
onclick="salida.value = aHexa(entrada.value)">
<input type=button name=actuar value="Hexa a Decimal"
onclick="salida.value = aDecimal(entrada.value.toUpperCase())">
<input type=button name=actuar value="Decimal a Binario"
onclick="salida.value = aBinario(entrada.value)">
<input type=button name=actuar value="Decimal a Base 3"
onclick="salida.value = CambioBase(entrada.value, 3)">
<input type=button name=actuar value="Decimal a cualquier Base"
onclick="salida.value = Cualquiera(entrada.value)">
</form>
</body>
</html>
¿Mejoras posibles a las rutinas...?
¿Otras conversiones no reflejadas...?
¿Merece ponerlo en las FAQs...?
Si alguien sabe de otras conversiones, y quiere aportarlas,
o si sabe de alguna implementación mejor (más eficiente, más didáctica...)
Posibilidades:
Un sitema más eficiente para cambios de base, podría ser que admitiera bases mayores a 9, dando un resultado en forma de polinomios (Creo que sería didáctico, aunque poco útil)
Cambiar las rutinas existentes de tipo recursivas en no-recursivas y viceversa...
Bueno, no espero soluciones, sino discutir (que nadie vaya a comerse mucho el coco)
Saludos