Konvertierung HEX-String to float

Gast #7299404
Lesenswert?

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 #7299432
Lesenswert?

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 #7299866
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren