C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl

Neue Frage »

Auf diesen Beitrag antworten »
abiturient_61 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ß
 
Auf diesen Beitrag antworten »
Karlito

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 Augenzwinkern 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
Auf diesen Beitrag antworten »
Matze84

noch ein anderer Tipp.

Denke dir mal eine nicht zu große dezimalzahl aus, und rechne sie mit stift und papier in eine Hex-Zahl um.
Damit du einfach für dich siehst, was genau passiert,

Dann kommst du evtl auch auf die Abbruchbedingung, die Karlito erwähnt hat.
Außerdem kommst du dadurch vielleicht leichter auf den Algorithmus, den du brauchst.
Lg Matze

EDIT: (obwohl dieser aufwand für eine hex zahl ja gar nicht lohnt, weil es ein formatierungszeichen (in C) dafür gibt.)
ich/wir mussten das in DUAL-Zahl umrechnen, denn dafür gibs wohl kein foramtierungszeichen...)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »