IEEE 754 schreibt vor, wie eine Gleitkommazahl mit einfacher Genauigkeit zu bilden ist. Die Frage ist, ob Python schon mit entsprechenden Zahlen arbeitet und wie das Datenformat ist.
Hintergund: Ein Stückchen Hardware liefert genau solche Werte und ich muß diese Werte lesen, verstehen und ggf. verändert wieder schreiben können. Das heißt, ich lese 4 Bytes und schreibe 4 Bytes. Mein Python läuft auf Windows.
Ich habe mir mal das Beispiel aus Wikipedia hergenommen:
http://de.wikipedia.org/wiki/IEEE_754
und einwenig Codiert, um an die Byterepräsentation einer Fließkommazahl zu kommen:
Code: Alles auswählen
>>> from ctypes import c_float, c_uint8, cast, POINTER
>>> pFloat = (c_float*1)()
>>> byteArray = cast(pFloat, POINTER(c_uint8))
>>> pFloat[0] = 18.4
>>> [byteArray[i] for i in range(0,4)]
[51, 51, 147, 65]
>>> pFloat[0]
18.399999618530273
Code: Alles auswählen
0011 0011 0011 0011 1001 0011 0100 0001
6 7 4 5 2 3 0 1
Code: Alles auswählen
0_100 0001 1_001 0011 0011 0011 0011 0011
Vorzeichen _ Exponent _ Mantisse
Gruß und Danke,
Christoph
PS: Gibt es eine elegantere Methode, um an die Bytes zu kommen?
PPS: Kann mir jemand sagen, warum im obigen Beispiel
Code: Alles auswählen
>>> [a for a in byteArray]