2016-05-12 43 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个值写入数据值。他们是一种循环以外的方式吗?在一个单一的声明? TRANSID,ProtoColID,PacketLength,单元ID,FC,WriteAddress,字计数,BYTECOUNT,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

数据值是由这个语句重新定义的,我真的只想替换开始值 –