Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C-Programm für Umwandlung von Dezimalzahl in Hexadezimalzahl » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 3 Beiträge
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...)
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
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ß