Question

Comment puis-je convertir un nombre contenu dans une chaîne de toute base à toute autre base?

Bases peut être tout i.e. .: 2, 16, 10, 4, 8, 9.

Je me attends à l'utilisateur d'entrer le numéro de base. L'utilisateur entrera dans la base de sortie (la base pour être converti en). L'utilisateur entrera le numéro qu'il veut convertir.

Pré-pensées: Je sauverai la base d'entrée et la base de sortie dans les variables. Alors, je vais enregistrer le numéro qu'il entre dans une chaîne (parce qu'il ne pouvait entrer dans une sorte de nombre (hexadécimal, binaire, base 5 ..).

Je suis juste essayer de comprendre comment convertir cette chaîne en nombre afin que je puisse le convertir à la base de sortie.

Toutes les idées?

Était-ce utile?

La solution

Pour convertir à partir d'une chaîne à un entier, vous aurez besoin de jeter un oeil à une table ASCII .

itérer à travers chaque personnage dans votre chaîne jusqu'à ce que vous atteignez la fin, et basé sur de ce que le personnage est et qui vont c'est dans: « 0 » à « 9 », « a » à « f », « A » « F », vous devrez soustraire la valeur du caractère inférieur dans la gamme de et ajoutez une quantité appropriée. puis l'ajouter à une valeur de l'accumulateur et vous devez être prêt à partir. Je suppose que vous aurez également besoin de vérifier toutes les valeurs qui font allusion à ce que fixons la valeur est (par exemple, je me attends à des valeurs hexagonales à préfixés par « 0x »).

Ainsi par exemple, si vous voyez un « 1 », vous aurez besoin de soustraire off « 0 ». si vous voyez un « a », vous aurez besoin de soustraire off « a » et ajouter 0x0a.

Autres conseils

L'algorithme général pour changer un nombre n de base b est quelque chose comme:

i = 0
while(n != 0)
   answer[i] = n mod b
   n /= b
   i++

(Notez que la réponse [0] détient le chiffre le moins significatif de la réponse.) Est-ce que ce sens? Quelle partie de ce pseudo-code-vous de la difficulté à mettre en œuvre?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top