Seite 1 von 1

Float nach Binär

Verfasst: Sonntag 26. August 2007, 21:33
von raf.k
Hi

Also, ich habe eine Datei mit einem haufen "von Menschen lesbarer" Zahlen, die möchte ich nun in folgen von 4 Bytes umwandeln. Ich komm nun aber auf keinen Ansatz, bis auf vielleicht eine Zahl von Hand umzurechnen.
Ich weiss nun auch leider nicht mal wie ein solches Prozedere sich nennt, deshalb bin ich beim googeln schnell nicht mehr weiter gekommen :(

Naja, die zahlen sollen dann möglichst von c++ wieder als float interpretierbar sein.
Also, ich lade die 4 bytes in ein char array und hab dann per

Code: Alles auswählen

float* myFloat = (float *) charArray;
schwupp mein float im programm^^

In diesem Thread: http://www.python-forum.de/topic-10821.html
wurde das Problem anfangs so mißverstanden, dass es meinem entsprach(siehe blackjacks post dort): also wenn ich ne liste ["lala", (float)1.55] mit "wb" schreibe, hab ich dann ein 8byte langes file?

Ich hoffe das klingt jetzt alles nicht zu wirr, danke für die hilfe im Voraus ;)

Gruss, Raf

Verfasst: Sonntag 26. August 2007, 21:46
von BlackJack
Du suchst entweder das `struct`-Modul wenn es einzelne Werte oder "gemischte" Werte sind:

Code: Alles auswählen

In [72]: struct.pack('f', 1.55)
Out[72]: 'ff\xc6?'

In [73]: len(struct.pack('f', 1.55))
Out[73]: 4
Wenn es viele C-floats in einer Liste sind, dann geht's am besten mit dem `array`-Modul:

Code: Alles auswählen

In [76]: array.array('f', [1.55, 42.23]).tostring()
Out[76]: 'ff\xc6?\x85\xeb(B'

In [77]: len(array.array('f', [1.55, 42.23]).tostring())
Out[77]: 8

Verfasst: Sonntag 26. August 2007, 22:02
von raf.k
Hi

Der struct.pack wirds sein.

Vielen dank für die schnelle Antwort.

raf