Seite 1 von 1

unpack - pack

Verfasst: Freitag 25. August 2006, 12:02
von gorba
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..

Verfasst: Freitag 25. August 2006, 12:32
von rayo
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

Verfasst: Freitag 25. August 2006, 13:17
von gorba
jeah, jetzt fehlen mir "nur" noch 2 Byte zum original. ;)

Verfasst: Freitag 25. August 2006, 13:52
von BlackJack
Das Du dafür das `array` Modul nehmen kannst hatte ich schonmal gesagt, oder?