www.mikrocontroller.net

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


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.