unpack - pack

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
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Freitag 25. August 2006, 12:02

Hi

Ich "unpacke" meine daten so:

Code: Alles auswählen

	lg = len(binDat) / 2
	tdat = struct.unpack('<'+lg*'H', binDat)
Funktioniert wunderbar. Wenn ich sie wider "packen" will mache ich das so:

Code: Alles auswählen

def packStruct(dat):
	result = struct.pack('<H', dat[0])
	i = 1
	while(i != lg):
		result = result + struct.pack('<H', dat[i])
		i = i + 1
	return result
Ist daran offensichtlich was falsch, was ich nicht sehe? Das result weicht nämlich massiv von den urprünglichen Daten ab..
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 25. August 2006, 12:32

Hi

Probiers mal so:

Unpack

Code: Alles auswählen

    lg = len(binDat) / 2
    tdat = struct.unpack('<%dH' % lg, binDat)
Pack

Code: Alles auswählen

    return struct.pack('<%dH' % len(dat), *dat)
Ich glaubs dass es irgendetwas mit dem Alignement von den Daten zu tun hat, struct macht das glaubs gleich wie C. Das ist jedoch anders als einfach alle Shorts aneinanderzureihen.

Aber bin mir wirklich nicht sicher.

So sollte es hoffentlich gehen (habs nicht getestet)

Gruss
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Freitag 25. August 2006, 13:17

jeah, jetzt fehlen mir "nur" noch 2 Byte zum original. ;)
BlackJack

Freitag 25. August 2006, 13:52

Das Du dafür das `array` Modul nehmen kannst hatte ich schonmal gesagt, oder?
Antworten