J'essaie d'écrire un programme C++ qui effectue des conversions de base.
Je veux convertir un nombre décimal à toutes les autres bases entières de 2 à 20.
Existe-t-il un algorithme efficace et facile à mettre en œuvre pour les conversions de base?
Je ne comprends pas où est exactement le problème? Il est très facile et direct de faire la conversion de base: vous le faites comme vous le feriez manuellement.
Exemple:
1025 (décimal) à la base 15:
1025 / 15 = 68 , remainder 5
68 / 15 = 4 , remainder 8
4 / 15 = 0 , remainder 4
Le nombre en base 15 est 485
Vous pouvez avoir deux problèmes:
L'analyse de la base d'origine à la représentation entière native de l'ordinateur (strtol
est très bonne à cela).
Formater dans la nouvelle base. (itoa
est assez bon à cela).
Si vous voulez l'écrire vous-même, vous pourriez aimer la fonction div
. Vous introduisez le nombre et la base, et le numéro le plus à droite est divisé. Répétez l'opération pour obtenir tous les chiffres.
Si vous voulez être plus efficace, vous pouvez diviser par la base carrée et obtenir deux chiffres à la fois (utilisez une table de correspondance pour obtenir les caractères ASCII des deux chiffres). Voici un exemple d'implémentations très efficaces. Le changer pour utiliser une base différente ne serait pas difficile.