Forum: Mikrocontroller und Digitale Elektronik Integer und co in ASCII Zeichen umwandeln


von Tobias (Gast)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von johnny.m (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.