2016-05-12 5 views
0

次のコードは、2つの値でアンパックするのに適しています。Pythonは変数値で展開します(Python 2.4.3はバージョンです)

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) 

しかし、n値をデータ値に入力したいとします。彼らはループ以外の方法ですか? 1つの声明で行うことは? TRANSID、ProtoColID、PacketLength、UNITID、FC、書き込みアドレス、WORDCOUNT、:バイト、datavalues = struct.unpack(recvFormat、データ)これは埋め込まれたPythonの2.4

答えて

0

タプルアンパックが実際に入れ子にすることができるされ

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

非常に良い答え、ありがとう。これらは私がデータ値のサイズを変更しないようにする方法ですか?私は5つの新しい値を置いて最後の5つを保持しています(サイズは10でした)。とにかくありますか?申し訳ありませんが、私はPythonに新しいです、あなたは答えます –

+0

@ JeffB私は理解していない、あなたが明確にできますか? –

+0

datavaluesはこのステートメントで再定義されています。最初の値を置き換えたいだけです –

関連する問題