Hallo zusammen, ich möchte gerne Variablen von mir von zB. Integer in ASCII Zeichen umwandeln. Dazu hatte ich überlegt den max. Wert den meine Variablen haben können ist 9999. Ich wollte nun jeweils Modulo Tausender rechnen anschließend mit dem Rest Modulo 100 und so weiter bis ich bei den Einserstellen bin. Wenn man dann 48 addiert kommt man auf das entsprechende ASCII Zeichen für die einzelne Zahl. Ist das so praktikabel oder gibt es einfachere bzw. sauberere Arten dieses umzusetzen. Kleine Info der Code soll in Ansi C geschrieben werden.
Das kann man durchaus so machen. (Aber in C solltest du nicht 48 addieren. Addiere einfach '0'. Macht zwar intern dasselbe, aber du musst dir nicht merken, dass der ASCII Code von '0' 48 ist. i = j + '0'; In C sind einzelne Character auch nichts anderes als kleine Zahlen. Wenn du dir aber Arbeit ersparen willst, dann nimmst du die Funktion itoa() oder _itoa(), je nachdem welche dir dein System zur Verfügung stellt.
Klar geht das so. Ist auch die übliche Vorgehensweise, das mit einer Kette von Divisions- und Modulo-Operationen zu machen. In der stdlib.h gibts aber auch fertige Funktionen, die aus Zahlenwerten ASCII-Strings machen. Immer drauf achten: Für die Ausgabe mit Standardfunktionen (sprintf und verwandte) ist i.d.R. ein Nullterminator am Ende des Strings erforderlich. Der wird von den Bibliotheksfunktionen (z.B. itoa) automatisch eingefügt. Es existieren in der stdlib.h sowohl Funktionen für Integer-Werte als auch für Gleitkomma, und zwar in beiden Richtungen (also Zahl -> ASCII-String und ASCII-String -> Zahl). Man kann zwar auch mit sprintf eine Zahl in einen ASCII-String umwandeln, jedoch ist sprintf sehr mächtig und bringt demzufolge viel Overhead mit, der für manche µCs schon zu viel ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.