Forum: Compiler & IDEs ASCII in int


von Carsten (Gast)


Lesenswert?

Hallo,

irgendwie find ich die Lösung nicht.

Ich bekomme eine Zahl z.B. 10465 per UART geschickt.
Also bekomme ich nacheinander die Zeichen
0x01,0x00,0x04,0x06,0x05.

Wie bekomme ich das als Integer(i = 10465) gespeichert?

Dankesehr

von Rahul D. (rahul)


Lesenswert?

>Ich bekomme eine Zahl z.B. 10465 per UART geschickt.
>Also bekomme ich nacheinander die Zeichen
>0x01,0x00,0x04,0x06,0x05.

Eher nicht. Wenn du über das UART eine 10465 geschickt bekommst, ist das 
eher
'1', '0', '4', '6', '5'
Also eine Schlange von Zeichen, die in der ASCII-Zeichentabelle einen 
bestimmten Platz einnehmen. Die '0' steht z.B. an Stelle 48 (0x30).
in C kann man ganz wunderbar aus ASCII integer machen, indem man die '0' 
abzieht:
So wäre dann 10465:
('1'-'0') * 10000 + ('0'-'0')*1000 + ('4'-'0')*100 + ('6'-'0')*10 + 
('5'-'0')

Einfacher ist es natürlich, die Zahl gleich beim Empfang zu "bauen":
int x=0;
x = x*10 + UDR;

von Carsten (Gast)


Lesenswert?

Hallo Rahul,

stimmt 0x30, 0x31 usw. hatte nicht nochmal nachgeschaut.

Vielen dank, ich glaub so bekomm ich es hin.

Viele Grüsse

Carsten

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.