Konvertierung HEX-String to float

Gast #7299404
Hallo,

erst einmal die Grunddaten
Zielcontroller: ESP32
Programmiersprache C

Der Controller bekomt über das Netzwek einen Datenstring mit 8 Zeichen 
(HEX-Darstellung). Diese Zeichen repräsentieren einen 32-Bit float Wert. 
Nun suche ich eine Möglichkeit wie ich diesen Datenstring in einen 
Float-Wert umwandeln kann.

Beispiel:
HEX-String "41B80000"  entspricht Dezimal 23.

Kann mir bitte jemand einen Beispielcode oder einen Lösungsansatz 
beschreiben.

Danke
Rhönschaf
Gast
Rhönschaf schrieb:
> Kann mir bitte jemand einen Beispielcode oder einen Lösungsansatz
> beschreiben.

Am einfachsten wäre es, die 8 Hexadezimalziffern zunächst in ein uint_32 
zu wandeln, und dann diesen uint_32 als float zu interpretieren, z.B. 
über eine union.

Das funktioniert aber nur wenn die 8 Hexadezimalziffern der unternen 
float-Darstellung auf dem ESP32 entsprechen.

LG, Sebastian
Gast
Hallo Sebastian,

danke, das war der zielführende Hinweis.

Hier mein Code, evtl. können es noch andere gebrauchen.

-----
union conv
 {
     int input;
     float output;
 };

 conv number;
 number.input=strtol("41BC0000", (char**)NULL, 16);

 Serial.println(number.input,HEX);
 Serial.println(number.output);
-------
Der Code funktioniert auf einem ESP32. Aus meiner Sicht wird der Code 
auf einem Atmel Arduino nicht funktionieren, da dort ein Integer nur 
16Bit breit ist.

LG
Rhönschaf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 3 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.