Python, Hexadezimalen Eingabestring in Float nach IEEE-754 wandeln

Gast #6334735
Hallo,

Ich möchte einen Hexadzimalen String, in ein Float wandeln.
z.b. "40000000" -> 2.0 / "40400000" -> 3.0
Nach IEEE 754.

Dazu findet man sehr viele Ansätze aber ich kann keinen mit dem 
gewünschten Ergebniss finden:

struct.unpack('!f', eingabestring.decode('hex'))[0]
--> String 'str' object has no attribute 'decode'

print(float.fromhex(eingabestring))
--> "40000000" -> 1073741824.0

Vielleich habt ihr eine Idee.
Schöne Grüße,
Matthias
Gast #6334901
Matthias schrieb:
> Ich möchte einen Hexadzimalen String, in ein Float wandeln.

ABC nach Float?
Kann man machen, macht man aber normalerweise nicht. Denn: Float ist ein 
Datentyp, der "hexstring" eher nicht, nur so ungefähr.

Gewandelt wird normalerweise  hex nach ASCII oder vom int nach float.

Darum: Suchstrategie ineffizent ;)
https://stackoverflow.com/questions/33944111/how-to-convert-int-to-float-in-python
https://stackoverflow.com/questions/209513/convert-hex-string-to-int-in-python

..
ghci-Beispiel:
1
[rbx@fe1 ~]$ ghci
2
GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
3
Prelude> abc * 1.0
4

5
<interactive>:1:1: error:
6
    • Variable not in scope: abc
7
    • Perhaps you meant ‘abs’ (imported from Prelude)
8
Prelude> 'abc' * 1.0
9

10
<interactive>:2:1: error:
11
    • Syntax error on 'abc'
12
      Perhaps you intended to use TemplateHaskell or TemplateHaskellQuotes
13
    • In the Template Haskell quotation 'abc'
14
Prelude> 0xabc * 1.0
15
2748.0
16
Prelude>

Andererseits macht der olle Interpreter aber auch ungefragt das hier:
1
Prelude> 0xa + 0xb
2
21

Antwort schreiben

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