2016-05-12 23 views
0

Der folgende Code funktioniert gut für ein Entpacken mit einem 2-Werte.Python Entpacken mit variablen Werten (Python 2.4.3 ist Version)

recvStruct = '>hhhBBhhB' 
recvStructSize = (len(data) - struct.calcsize(recvStruct))/2 
recvStruct = recvStruct + str(recvStructSize) + 'h' 
recvStructSize = struct.calcsize(recvStruct)  
recvFormat = '%s%dx' % (recvStruct, len(data) - recvStructSize) 
TransID , ProtoColID, PacketLength, UnitID, FC, WriteAddress, WordCount, ByteCount, datavalues[0], datavalues[1] = struct.unpack(recvFormat, data) 

Aber ich möchte n Werte in Datenwerte tun. Ist ihre Art eine andere als eine Schleife? in einer einzigen Aussage zu tun? TransID, ProtoColID, PacketLength, UnitID, FC, Schreibadresse, Wordcount, ByteCount, Datenwerte = struct.unpack (recvFormat, Daten)

Dies ist ein eingebetteter Python 2.4

Antwort

0

Tuple Auspackstation tatsächlich geschachtelt werden können:

unpacked = struct.unpack(recvFormat, data) 
(TransID, ProtoColID, PacketLength, UnitID, FC, WriteAddress, WordCount, ByteCount), datavalues = unpacked[:8], unpacked[8:] 
+0

Sehr nette Antwort, danke. Ist dies eine Möglichkeit, die Größe von Datenwerten zu reduzieren, sagen wir, ich habe 5 neue Werte, die ich platzieren möchte, und halte die letzten 5 (die Größe war 10). Gibt es irgendeinen Weg? Sorry, ich bin neu bei Python, du antwortest mir beibringen –

+0

@JeffB Ich verstehe nicht, können Sie klären? –

+0

datavalues ​​wird durch diese Anweisung neu definiert und ich möchte nur die Anfangswerte –