Wie man einen dezimal-zu-hexadezimal-Konverter in C
So, ich bin ein absoluter Anfänger in C und ich habe einen dezimal-zu-hexadezimal-Konverter.
Also ich denke, dass ich brauchen würde, um eine Schleife, Schleifen, bis das Ergebnis 0 ist.
Aber wie kann ich es machen, denken Sie daran, alle Reste? Die Zahl wird die Eingabe mit scanf, so kann ich die nicht passen Sie den code.
Nun würde ich wollen, so etwas zu tun
while(number(n)!=0)
{
number0 / 16 = number1
number0 % 16 = remainder0
number1 / 16 = number2
number1 % 16 = remainder1
.....
number(n-1) / 16 = 0
number(n-1) % 16 = lastremainder
}
hex = lastremainder, ..., remainder2, remainder1, remainder0
Aber wie kann ich das Programm erstellen, die Variablen in der Schleife? Benötige ich eine komplett andere Methode? Ich nahm einen Blick auf die anderen dezimal-nach-hex-Konverter und-ich weiß nicht Recht bekommen, wie Sie funktionieren.
Wie gesagt ich bin ein absoluter Anfänger, also sorry wenn die Frage dumm ist.
Danke für die Antworten. So arrays sind die Antwort auf mein problem? Ich nicht ganz verstehen jetzt, aber danke für den Punkt in die richtige Richtung.
- Lesen Sie die Dezimalzahl als eine normale Ganzzahl (Basis 10) und drucken Sie es als eine hexadezimale Zahl?
- Ich denke der OP muss die Lösung ohne Verwendung von Formatangaben.
- Whyever würde das sein?
- Völlig einverstanden... ich schlug vor, eine Antwort mit
"%x"
mitsprintf
oder auch nurprintf
...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen ein array schreiben und das bleibt es:
Die Linie
array[counter]=number%16;
bedeutet, dass das erste element des Arrays Anzahl%16 - der zweite wird (Zahl/16)%16 usw.Müssen Sie die
counter
zu wissen, wie viele Elemente im array (wie viel bleibt), so dass Sie später schreiben Sie zurück.(Berücksichtigen Sie hier, dass Sie eine Grenze haben -
int array[50];
denn, was passiert, wenn Ihre Anzahl ist wirklich sehr groß und Sie haben mehr als 50 bleibt? Die Lösung wäre, dies zu schreiben, dynamisch, aber ich glaube nicht, dass man machen sollte, dass an diesem Punkt.)"%x"
scheint sehr viel einfacher als deine Lösung, IMO... sorryIch würde einfach verwenden
sprintf
, um ehrlich zu sein:Arbeit getan...
In full, dein code könnte ungefähr so Aussehen:
Oder auch:
Wenn Sie wollen in der Lage sein, um Größe, unbegrenzte Anzahl, müssen Sie die Verwendung von dynamischen Arrays.
Erstens erhalten Sie die Eingabe-Länge von Schlaufe und dann zuweisen, array, wie gebraucht.
Sie erhöhen müssen ein index in die Schleife und setzen Sie den aktuellen Wert in array[index].
Nur versuchen, diese:
string hex = ''
? Es gibt keinestring
Typ in C. Auch, wenn Sie single-quoted-Werte, diese werden interpretiert als int-Werte, und mit strcat mit denen wird nicht funktionieren...switch
warum nichtconst char *hexMap = "0123456789ABCDEF";
und verwendenchar hex = hexMap[someInt%16]
? nur viel kürzer48
und55
soll als Ersatz für'0'
unda-10
? Das ist nur richtig in bestimmten Zeichen-Codierungen. Und Sie müssen#include <string.h>
zu verwendenstrrev()
. Was passiert, wennnum
ist negativ oder größer als0xFF
?