Forum: Mikrocontroller und Digitale Elektronik Stringzahlen in berechenbare Zahlen umwandeln


von Markus Huber (Gast)


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

von peter (Gast)


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

von Notker (Gast)


Lesenswert?

char *itoa( int value, char *string, int radix ); Converts an integer
into a string. This is not ANSI C, but nonetheless (or maybe just
because of this) very useful.

Gruss,

Notker

von Notker (Gast)


Lesenswert?

Sorry, war wohl genau das Verkehrte.

Aber jetzt ;-)

long atoi( char *p ); Converts the string 'p' to an integer.

von Eckhard (Gast)


Lesenswert?

alternativ atof, wenns denn flloat sein muß

Eckhard

von Notker (Gast)


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

von Markus Huber (Gast)


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?

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.