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

unpack - pack

Beitragvon gorba » 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:

Beitragvon rayo » 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

Beitragvon gorba » Freitag 25. August 2006, 13:17

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

Beitragvon BlackJack » Freitag 25. August 2006, 13:52

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder