Forum: Mikrocontroller und Digitale Elektronik ASCII in Integer umwandeln


von Max (Gast)


Lesenswert?

Moin!!!

Ich will aus der UART mehere ASCII-Zeichen einlesen und um nun damit 
zurechnen muss das ganze in ein verwertbares Format umgewandelt werden.

Also '1'2'3' (ASCII) <---> 123 (double)

kann mir jemad da einen Lösungsansatz geben???

von Johannes M. (johnny-m)


Lesenswert?

Erstens ist double zumindest in C kein Integer-Format, sondern ein 
Gleitkommaformat. Und mal davon ausgehend, dass das ganze in C sein 
soll, gibt es in der stdlib.h eine Reihe von Funktionen, die solche 
Umwandlungen machen können, vorausgesetzt natürlich, die ASCII-Zeichen 
liegen in Form eines nullterminierten Strings vor.

Allerdings sollte man bei solchen Fragen immer angeben, mit welcher 
Programmiersprache man überhaupt arbeitet, vorausgesetzt, man möchte 
wirklich sinnvolle Antworten erhalten!

von Flo (Gast)


Lesenswert?

> Also '1'2'3' (ASCII) <---> 123 (double)

100*('1'-'0') + 10*('2'-'0') + 1*('3'-'0') = 123

von Thilo M. (Gast)


Lesenswert?

Geht mit 'atod', umgekehrt mit 'dtoa' (wenn ich mich recht erinnere).
Steht in der libc vom WINAVR.

von Johannes M. (johnny-m)


Lesenswert?

Thilo M. wrote:
> Geht mit 'atod', umgekehrt mit 'dtoa' (wenn ich mich recht erinnere).
> Steht in der libc vom WINAVR.
Wenn Du schon meinst, es noch schreiben zu müssen, obwohl der OP 
offensichtlich keinerlei Interesse mehr an der Sache hat, dann schau 
wenigstens selber vorher in der Doku nach! Dass es dafür 
Bibliotheksfunktionen gibt, hatte ich oben schon erwähnt, und sogar die 
Headerdatei genannt. Wenn Du da hinein geschaut hättest, dann wüsstest 
Du, dass die Funktion strtod heißt...

von Johannes M. (johnny-m)


Lesenswert?

Gero A. wrote:
> Wer hat dir denn ans Bein gepinkelt?
>
> Wenn du schon meinst, oben erwähnt haben zu müssen, dass es dafür
> Bibliotheksfunktionen gibt, dann schau gefälligst selber vorher in der
> Doku nach, welche Funktionen das sind.
Warum sollte ich das tun? Der OP kann (wenn er schon nicht in der Lage 
ist, das von ihm verwendete System/Compiler anzugeben) auch selber 
nachsehen, welche Funktionen das konkret sind. Da muss der Hinweis auf 
die betreffende Headerdatei genügen.

> Lebst du davon, hier Beiträge zu beantworten und hast den alleinigen
> Anspruch auf die richtige Antwort?
Nö. Und atod gibt es in der AVR-libc schlicht und ergreifend nicht. 
Wenn dann wäre es atof.

von Johannes M. (johnny-m)


Lesenswert?

Gero A. wrote:
> Sind wir hier vor Gericht?
> "Die Behauptung des Klägers ist definitiv unwahr. Sollte sie doch wahr
> sein, dann habe ich immer noch recht, weil..."
Wer ist denn der Kläger? Bist Du Thilos Anwalt? Oder was hat Dich 
überhaupt dazu bewogen, hier "einzuschreiten"?

Demzufolge auch die Frage, wer sich hier lächerlich macht. Wenn Du was 
Fachliches zum Beitrag zu sagen hast, dann tu das. Ansonsten gibt es zu 
viele, die nur posten, weil sie unbedingt ihren Senf dazugeben müssen, 
auch wenn es falsch ist. Ich habe Thilos Irrtum korrigiert und ihn 
darauf hingewiesen, dass er vielleicht besser nicht aus der Erinnerung 
geschrieben hätte (das bringt dem Fragesteller nämlich außer 
zusätzlicher Verwirrung nichts, wenn es nicht stimmt und er sich nach 
der nicht-existenten Funktion atod nen Wolf sucht). So, und getz is 
gut.

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.