Seite 1 von 1

Double/Float Kodierung ausgeben

Verfasst: Mittwoch 4. Juni 2014, 12:56
von darktrym
Hallo,
in Matlab kann man mittels sprintf die Kodierung(Repräsentation) von single und double ausgeben über Formatparameter t bzw. b.
Geht das auch in Python?

Beispiele für double als Hexstring:
17=0x4031000000000000
25.3782=0x403960D1B71758E2
Und natürlich der umgekehrte Weg, wäre schön.

Re: Double/Float Kodierung ausgeben

Verfasst: Mittwoch 4. Juni 2014, 13:21
von BlackJack
So etwas hier geht:

Code: Alles auswählen

In [6]: 17.0 .hex()
Out[6]: '0x1.1000000000000p+4'

In [7]: 25.3782 .hex()
Out[7]: '0x1.960d1b71758e2p+4'
Was anderes muss man selber programmieren, also zum Beispiel mit den `struct` und `binascii` Modulen.

Re: Double/Float Kodierung ausgeben

Verfasst: Mittwoch 4. Juni 2014, 13:25
von EyDu
Mittels struct-Modul ist es ein Einzeiler:

Code: Alles auswählen

struct.pack("d", 25.3782).encode("hex")
Unter Umständen musst du auf die Endianness achten.

Re: Double/Float Kodierung ausgeben

Verfasst: Mittwoch 4. Juni 2014, 13:54
von darktrym
Danke, EyDu das ist es. Big Endian und ich hab die gleichen Ausgaben.



Matlab suckt.