Sida 1 av 1

Python, hur packar man element i en lista mha struct.pack

Postat: 28 aug 2007, 10:44
av mrolfson
Hej,
jag har ett problem som jag inte hittar någon bra lösning på.
Jag behöver skicka binärt data via sockets i  python. Mha struct kan man packa oilka datatyper till en sträng, men hur får man en "lista av floats" in i pack

from struct import *
SeqNo=3
Command=23
TempArrayInitial = [1.0, 2.0, 3.0, 4.0, 5.0]
line=pack('I5fI',SeqNo,TempArrayInitial,Command)

Här får jag ett runtimefel som säger att formatmasken måste vara lika som antalet variabler:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\struct.py", line 63, in pack
    return o.pack(*args)
struct.error: pack requires exactly 7 arguments


Jag kan visserligen göra det i flera steg, men helst inte:

from struct import *
SeqNo=3
Command=23
TempArrayInitial = [1.0, 2.0, 3.0, 4.0, 5.0]
line=pack('I',SeqNo)

for aTemp in TempArrayInitial:
    line +=pack('f',aTemp)

line +=pack('I',Command)

Tack på förhand!

SV: Python, hur packar man element i en lista mha struct.pack

Postat: 28 aug 2007, 13:54
av per9000
En sökning på usenet (via google groups)
http://groups.google.com/group/comp.lan ... ocket+pack

gav följande bra (?) tråd
http://groups.google.com/group/comp.lan ... d82ec688df

som gav en länk hit:
http://www.python.org/doc/current/lib/m ... truct.html

HTH,
Per

PS: comp.lang.python är huuuuur bra som helst :)