español c++ algorithm base-conversion

c++ - español - Conversiones de base 10 a base n



itoa c español (2)

No entiendo dónde está exactamente el problema? La conversión de bases es muy fácil y directa: lo haces como lo harías a mano.

  • divide el número por base
  • anote el resto
  • Repite el proceso con la parte entera de la división.
  • para cuando llegues a cero
  • Los restos en orden inverso le dan los dígitos en 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.

Estoy tratando de escribir un programa en C ++ que haga conversiones de bases.

Quiero convertir un número decimal a todas las otras bases de enteros de 2 a 20.

¿Existe un algoritmo eficiente y fácil de implementar para conversiones base?


Puede tener dos problemas:

  • El análisis desde la base original a la representación entera nativa de la computadora ( strtol es bastante bueno en esto).

  • Formateo en la nueva base. ( itoa es bastante bueno en esto).

Si desea escribirlo usted mismo, puede que le guste la función div . Alimenta el número y la base, y se divide el dígito más a la derecha. Repita para obtener todos los dígitos.

Si desea ser más eficiente, puede dividir por el cuadrado base y obtener dos dígitos a la vez (use una tabla de búsqueda para obtener los caracteres ASCII para ambos dígitos). Aquí hay un ejemplo de algunas implementaciones muy eficientes. Cambiarlo para usar una base diferente no sería difícil.