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
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
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
Sorry, war wohl genau das Verkehrte. Aber jetzt ;-) long atoi( char *p ); Converts the string 'p' to an integer.
alternativ atof, wenns denn flloat sein muß Eckhard
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.