C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl |
|
C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl |
|
Hallo Leute,
ich habe ein bzw. mehrere Probleme bei der Programmierung von einem "Dezimalzahl-Hexadezimalzahl-Umwandler" in der Programmiersprache C...
Und zwar soll die Dezimalzahl im Typ unsigned long eingelesen werden... Da liegt schon mein erstes problem, habe keine erfahrung mit dem typ...
Kommen wir zum eigentlichen Programm... Also aus einer dezimalzahl erhält man eine hexadezimalzahl, indem man immer durch 16 teilt und sich die Reste aufschreibt..
Da ist mein problem: Wie kriege ich Zuteilungen für die Reste ? Sagen wir der Rest wird mit der Variable R bezeichnet... R1, R2, R3, R4 usw ???
Wie kann ich das ganze in einer Schleife darstellen?
Ich brauche ja immer die Reste, die liefert mir ja der Modulo... Sagen wir ich habe eine Zahl x und einen Rest R..
Ich habe das gefühl, dann muss in die Schleife:
{
R[i] = x mod 16;
printf(..//hier die Reste nebeneinander auflisten, quasi ziffernweise//..);
}
Nur weiß ich nicht, wie das i damit zusammenhängt und wie beispielswiese die Grenzen in der Schleife definiert werden.
Kann es sein, dass hier gar keine for oder while Schleife anwendbar ist ?
Würde mich freuen, wenn Ihr mir helfen könnt !
Gruß
|
|
05.12.2012 23:22 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Hallöchen,
unsigned long ist eine 64 Bit Zahl.
Grundlegend solltest du dir klar machen, wie viele Hexadezimaltziffern maximal benötigt werden um eine Solche Zahl darzustellen.
Eine while-Schleife kannst Du hier prinzipiell verwenden. Die Frage ist nur wie
Schlage doch mal eine geeignete Abbruchbedingung vor.
Wenn du eine Dezimalzahl in Hexadezimal umwandelst, dann hast Du schon recht, dass man dies tut, indem man die Dezimalzahl fortwährend durch 16 teilt und die Reste betrachtet. Problem ist, dass dabei dei Reihenfolge der Ziffern verkehrtherum auftauchen und Du somit nicht einfach mit printf von Links nach Rechts schreiben kannst.
Ich würde Dir ein char-Array geeigneter Größe empfehlen und dies entweder mit 0 initialisieren und Rückwärts auslesen oder Du zählst die Anzahl Zifferm, welche Du in das Array geschrieben hast (die Anzahl musst du eh irgendwo mitzählen).
VG,
Karlito
|
|
06.12.2012 02:39 |
|
|
|