Forum: Compiler & IDEs mehrstellige Ascii-Zahl in eine Dezimalzahl wandeln


von Jens S. (jenser)


Lesenswert?

Grüße,

ich habe wieder einmal eine kleien Frage. Ich schicke mittels 
Hyperterminal Werte (bsplw. '5','0','0','0','0') zu meinem Controller. 
Dieser soll diese Werte als eine Zahl behandeln und in eine Variable 
speichern. Bisher verwende ich dieses wahnsinns Konstrukt:

long a;

a=(p2[4]-48)+10*(p2[3]-48)+100*(p2[2]-48)+1000*(p2[1]-48)+10000*(p2[0]-4 
8);

Da gibts doch bestimmt eine schönere Lösung um Ascii-Zeichen in eine 
Variable zu übergeben.

Danke

von Karl H. (kbuchegg)


Lesenswert?

Jens Sch schrieb:

> Da gibts doch bestimmt eine schönere Lösung um Ascii-Zeichen in eine
> Variable zu übergeben.

atoi()
strtol()
strtoul()

interessanterweise gibt es kein strtoi() oder strtoui()

Aber auch ein Eigenbau ist ja nicht das grosse Problem
1
  a = 0;
2
  for( i = 0; i < 5; ++i )
3
    a = 10 * a + ( p[i] - '0' );
besser sind jedoch die vorhandenen Funktionen.

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.