Float-4Byte-Float

Gast #76902
Hallo.

Ich habe ein kleines Problem und zwar:

Ich möchte eine Variable vom Typ Float in
4 Bytes zerlegen, im I2C EEPROM ablegen,auslesen und
am Display anzeigen.

Das Problem ist nicht das Senden und Empfangen,sondern
das Umwandeln der float variable in die 4 Bytes bzw. umgekehrt.

Lg Toni.
Gast
Hi Toni!

Ich weiss nicht ob es gerade die einfachste und schönste Lösung ist,
aber Du könntest das Konvertieren zum Beispiel so machen:

// float in 4 bytes zerlegen
float x = 3.141596;
unsigned char * float_pointer = (unsigned char*)&x;
unsigned char b[4];

b[0] = *float_pointer++;
b[1] = *float_pointer++;
b[2] = *float_pointer++;
b[3] = *float_pointer++;

// und die 4 bytes wieder zu einem float zusammensetzen
float y;
float_pointer = (unsigned char*)&y;

*float_pointer++ = b[0];
*float_pointer++ = b[1];
*float_pointer++ = b[2];
*float_pointer++ = b[3];

// zur Kontrolle ausgeben
printf("%e  %e\n", x, y);



Dabei wird einfach über einen Zeiger auf den Speicherplatz des Floats
zugegriffen und die Werte der 4 Bytes der Reihe nach ausgelesen und in
das Array b gespeichert. Das Rückschreiben funktioniert genauso, nur
sind die Zuweisungen andersherum...

MfG
  Daniel Jelkmann
Gast
Hi nochmal,

das printf(); hatte ich übrigens nur zur Kontrolle reingesetzt, um zu
verifizieren, dass der Code auch macht was er soll... Das printf() gibt
Text auf der Standardausgabe aus, beim AVR wird das mit dem printf()
daher wohl schwierig ;) einfach wegdenken die Zeile...

MfG
  Daniel Jelkmann

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.