String in Int umwandeln

Gast #1954392
Lesenswert?
• ▲
▼
Ich habe ein Gerät, dass mir eine Liste von Zahlen schickt. Zuerst kommt 
die Anzahl der zu empfangenen Zeichen, Trennzeichen ist 0x20, komma=2E 
und die Zahlen sind ASCII-kodiert. Abgeschlossen wird mit einem 
Nullbyte.
Also z.B. 2, 20, 32,35,39,2E,35, 20, 32, 0
entspricht 259,5 und 2.
Ich suche nach einer effizienten Möglichkeit, diese Zeichenkette mit 
einem AVR zu dekodieren. Die nachkommastellen kann ich entweder 
ignorieren oder (besser) runden.
die üblichen Stringfunktionen helfen leider nicht weiter, da die Zeichen 
linksbündig übertragen werden.
Hat jemand einen Tipp für mich?
#1954430
Lesenswert?
• ▲
▼
Tja - also irgendwie wirste wohl selbst einen Parser für solche Strings 
bauen müssen, der Dir den String auseinandernimmt.
- Komma suchen
- dann die einzelnen Bytes nach links bis zum Trennzeichen extrahieren, 
-30 nehmen, und mit der jeweiligen Wertigkeit (10^0, 10^1, ...) 
multiplizieren, und dann zusammenzählen.
- Genau so auch mit den Werten nach dem Komma, oder eben ignorieren, 
oder, wenn man runden will, entsprechend dem Wert in Digit 10^-1 dies 
tun mit dem ganzzahligen Teil.
Eine fertige Funktion wird es wohl (nach meinem Gefühl) für solch 
spezifische Stringformate nicht geben.

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.