Python, Hexadezimalen Eingabestring in Float nach IEEE-754 wandeln

Gast #6334735
Lesenswert?

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

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

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