Stringzahlen in berechenbare Zahlen umwandeln

Gast #19200
Lesenswert?

Hallo!
Folgendes Problem:
Ich habe von einem GPS-Empfänger den Längen- und Breitengrad in
jeweils einen String eingelesen.
zB. [4812.0896] und [1512.3752]
Leider kann ich mit diesem Zahlenformat nicht rechnen.
Wie kann ich so einen String in eine float-Zahl umwandeln?????
Ich verwende CodeVisionAVR und möchte mit einem Mega163 eine kleine 
GPS-Steuerung für mein Modellflugzeug entwerfen.
Für meine Berechnungen ist der Dezimalpunkt unwichtig.
Man könnte also auch in int-Zahlen umwandeln.
Nur wie ist die Frage?

Gibts dazu Befehle oder muß man sich eine Routine schreiben.
Falls dazu eine Routine nötig ist >> ich habe keinen blaßen Schimmer wie 
ich das machen soll >> bitte um Ansatz.
Besten Dank schon mal für euer Interesse!

Max
Gast #19201
Lesenswert?

Die Zahlen sind im ASCII-Format. Du mußt die einzelnen Stellen in 
Zahlenwerte umwandeln. Dezimal "48" repräsentiert ASCII "0", "49"="1" 
usw, bis 9.

Dann mußt Du die einzelnen Stellen mit der entsprechenden Größenordnung 
multiplizieren.

z.B.: "123" ASCII = "49" "50" "51" (so kommen die Zahlen an)
jetzt überall 48 subtrahieren, dann kriegst du "1" "2" "3" raus.
und dann 100 x "1" + 10 x "2" + 1 x "3" = 123

Grüße,
Peter
Gast #19205
Lesenswert?

> alternativ atof, wenns denn flloat sein muß

Wenn man es hat, ist es gut. Im avrgcc ist diese Funktion m.w. noch 
nicht implementiert. Vielleicht hat er ja bei dem CodeVision mehr Glück.

Notker
Gast #19206
Lesenswert?

Hey, danke an alle.
Mit dem was da steht müßt ichs hinbekommen.
Werde das ganze nach int wandeln da es mir einfacher erscheint.
Die Lösung von Peter gefällt mir gut, da ich das schon mal in die andere 
Richtung gemacht hab >> int to string.
long atoi( char *p ) ist auch gut, nur stört da nicht der Punkt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren