Base 10 a base de n de las conversiones [cerrado]
-
13-12-2019 - |
Pregunta
Estoy tratando de escribir un programa de C++ que hace la base conversiones.
Quiero convertir un número decimal a todos los otros enteros bases de 2 a 20.
Hay un eficiente y fácil de implementar el algoritmo para conversiones de base?
Solución
¡No entiendo dónde está exactamente el problema?Es muy fácil y straigt, para hacer la conversión de la base: lo haces como lo harías a mano.
- Divide el número por Base
- anote el resto
- Repita el proceso con la parte entera de la división
- detener cuando llegues a cero
- Los residuos en orden inverso le brindan los dígitos en la base
Ejemplo:
1025 (decimal) a la base 15:
1025 / 15 = 68 , remainder 5
68 / 15 = 4 , remainder 8
4 / 15 = 0 , remainder 4
El número en la base 15 es 485
Otros consejos
Usted puede tener dos problemas:
El análisis de la base original para el nativo del ordenador entero representación (
strtol
es muy bueno en esto).Formato en la nueva base.(
itoa
es muy bueno en esto).
Si desea escribir usted mismo, puede que te guste la div
la función.Ingresa el número y la base, y que se divide el dígito de más a la derecha.Repita para obtener todos los dígitos.
Si quieres ser más eficiente, usted puede dividir por la base del cuadrado, y obtener dos dígitos al mismo tiempo (el uso de una tabla de búsqueda para conseguir los caracteres ASCII para los dos dígitos). He aquí un ejemplo de algunas implementaciones eficientes. Cambiar el uso de una base diferente no sería difícil.