ASCI to Character Konvertierung

Gast #4388150
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
Gast #4388160
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.
#4388197
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.
Gast #4393222
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.