Double/Float Kodierung ausgeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

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.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
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.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Danke, EyDu das ist es. Big Endian und ich hab die gleichen Ausgaben.



Matlab suckt.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten