Forum: PC-Programmierung ASCI to Character Konvertierung


von Peter (Gast)


Lesenswert?

Hallo,

Ich sende mit QT einen String über den Seriellen Anschluss an einen 
Mikrocontroller (Arduino).

Der String kommt an, jedoch ist er in einem ASCI Format. Sprich Sende 
ich eine 0, kommt eine 48 an, 1 mit 49 etc..

Mein späterer String entspricht in etwa einer NMEA Codierung also bspw. 
$12,23,43*

Wie decodiere ich den String nun am besten in einen character? Meine 
Idee war eine lookup table, aber eventuell geht es ja noch einfacher 
(?).

Grüße

Peter

von dsdsdsd (Gast)


Lesenswert?

Siehe ascii table

von Peter II (Gast)


Lesenswert?

Peter schrieb:
> Mein späterer String entspricht in etwa einer NMEA Codierung also bspw.
> $12,23,43*

das ist doch auch ASCI - was willst du da noch umwandeln.

'0' = 49 = 0x31 = 061

das ist alles das gleiche, nur eine andere Darstellung. Ist sind immer 
die gleichen 8 bit.

von Klaus W. (mfgkw)


Lesenswert?

Peter II schrieb:
> '0' = 49 = 0x31 = 061

knapp daneben :-)

von Peter II (Gast)


Lesenswert?

Klaus W. schrieb:
> knapp daneben :-)

gut das jemand aufpasst.

von Karl H. (kbuchegg)


Lesenswert?

In praktisch jeder Programmiersprache gibt es Möglickeiten einen String 
(der eine Textrepräsentierung einer Zahl enthält) in dieselbe numerische 
Zahl zu konvertieren.

In C gibt es zb die Funktion atoi. Die hat zwar ein Problem, aber wenn 
das ausgeschlossen werden kann, funktioniert sie nicht schlecht.
Hast du also den String
1
  char txt[] = "123";
vorliegen, dann konvertiert
1
  int num;
2
  num = atoi( txt );
den Text in die gleichwertige Zahl 123. num hat danach den Wert 123.
Ein
1
  int num;
2
  char txt[] = "123";
3
4
  num = atoi( txt );
5
  printf( "%d\n", 2 * num );
würde also den Zahlenwert 246 ausgeben.


Und so gibt es in jeder Programmiersprache entsprechende 
Konvertierfunktionen, die von Textrepräsentierung auf numerische 
Repräsentierung und umgekehrt umwandeln. Normalerweise lernt man diese 
Funktionen relativ früh in seiner Ausbildung kennen.

von Georg (Gast)


Lesenswert?

Peter schrieb:
> Sprich Sende
> ich eine 0, kommt eine 48 an

Wie meinst du das? Eine ASCII 4 und eine ASCII 8, oder ein Byte mit dem 
dezimalen Wert 48??

Peter schrieb:
> NMEA Codierung also bspw.
> $12,23,43*

Wie meinst du das? Soll aus ASCII '23' ein Byte mit dem dezimalen Wert 
23 werden? Oder was sonst?

Peter schrieb:
> Wie decodiere ich den String nun am besten in einen character?

garnicht, ein String besteht aus Charactern, in der Regel aus mehreren.

Georg

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.