Gast
#1347199
Moin, ich bekomm es einfach nicht hin 4 ASCII Zeichen in eine Float-Zahl umzuwandeln. Kennt einer zufällig eine einfache Lösung.
|
Anzeige
|
4 ASCII Zeichen in Float
Gast
#1347199
Moin, ich bekomm es einfach nicht hin 4 ASCII Zeichen in eine Float-Zahl umzuwandeln. Kennt einer zufällig eine einfache Lösung.
Gast
#1347204
ach, die Sprache ist C Würde es Dir etwas ausmachen, zu beschreiben, was Du erreichen willst? Könntest Du ein Beispiel geben? Welche Zeichenfolge soll welchen float-Wert ergeben?
Gast
#1347231
4 Byte beschreibt eine Floatzahl, diese 4 Byte hab ich als String vorliegen. Jetzt möchte ich einfach nur die 4 Byte als Floatzahl darstellen und wieder in einen neuen String schreiben. Hab grad die Funktion atof gefunden, bin mir etwas unsicher ob die mir wirklich hilft.
Gast
#1347255
> 4 Byte beschreibt eine Floatzahl, diese 4 Byte hab ich als String > vorliegen. Jetzt möchte ich einfach nur die 4 Byte als Floatzahl > darstellen und wieder in einen neuen String schreiben. Ja, soweit haben wir es verstanden. Aber so wie du es beschrieben hast, lässt es zwei Interpretationen zu: 1) String "1234" -> float 1234 2) String "1234" -> 0x31323334 -> float 825.373.492 Also wat nu? Ralf
oder:
... je nachdem
Gast
#1347278
ich hab es als "ABCD" vorliegen und will das in einen String der
Floatzahlen enthält umwandeln ("1.5467x10^1") Wenn ich mich nicht irre
war ja das MSB das Vorzeichenbit und die letzten 8 Bit beschreiben die
Exponenten. Naja, ich glaube ihr habt meine Frage schon beantwortet.
Danke.
ok, also hast du in den 4 Byte die Binärdarstellung der float. Dann entfällt die Variante mit atof(); es bleibt die Zeigergeschichte. Nach meinem Vorschlag hast du jetzt aber erstmal nur die float in der Variablen f. Wenn du die noch in einen String konvertieren willst, geht das z.B. mit sprintf():
Das erzeugt jetzt nicht das Format 1.5467x10^1, sondern 1.5467E001 oder so etwas in der Art, aber das sollte wohl auch passen.
Gast
#1347289
vielen Dank für die Anworten, eine kleine Frage hätte ich noch. uint8_t gibts bei DEV C++ nicht, weiss einer wie es zufällig dort heisst Das sollte es dort auch geben, such mal nach inttypes.h oder stdint.h Wenn es es tatsächlich nicht geben sollte: unsigned char Noch ein kleiner Hinweis: je nach Zielarchitektur könnte
einen Fehler hervorrufen, weil der string ascii an jeder beliebigen Position stehen kann, der Pozessor bei der Zuweisung des Floats aber eventuell eine auf 4 alignte Adresse erwartet. Falls das der Fall ist, sollte man alle 4 Bytes einzeln zuweisen, also
MfG Mark Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|