Float nach Binär

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
raf.k
User
Beiträge: 4
Registriert: Sonntag 26. August 2007, 21:18
Wohnort: Aachen
Kontaktdaten:

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
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
raf.k
User
Beiträge: 4
Registriert: Sonntag 26. August 2007, 21:18
Wohnort: Aachen
Kontaktdaten:

Hi

Der struct.pack wirds sein.

Vielen dank für die schnelle Antwort.

raf
Antworten