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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top