使用Python 2结构包以可变大小数组作为参数

2024-06-28 20:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用结构包在Python2.4.3中,以及提示?你知道吗

数组datavalues的长度必须是n,我希望用它作为包中列出每个元素的最后一个参数。你知道吗

datavalues = array("i",[20, 40, 60])
data = conn.recv(1024)
print 'Connect by', addr
print 'nice try'
sys.stdout.write(hexdump(data))
recvStruct = '>hhhBBhh'
recvStructSize = struct.calcsize(recvStruct)
recvFormat = '%s%dx' % (recvStruct, len(data) - recvStructSize)
TransID , ProtoColID, PacketLength, UnitID, FC, StartAddress, RegisterCount = struct.unpack(recvFormat, data)
datatranStruct = '>hhhBBBhhh'
datatranStructSize = struct.calcsize(datatranStruct)
datatranFormat = '%s%dx' % (datatranStruct, 10 + (2*RegisterCount) - datatranStructSize)
print 'datatranFormat ',datatranFormat
print TransID, ProtoColID, PacketLength, UnitID
print  FC, StartAddress, RegisterCount
# I want to just say datavalues in the next line, I know I need to fix the format statement when using n values
datatran = struct.pack(datatranFormat, TransID , ProtoColID, PacketLength+(2*RegisterCount), UnitID, FC, 2*RegisterCount, datavalues[0], datavalues[1], datavalues[2])
conn.sendall(datatran)

Tags: dataconnstructfcprintunitiddatavaluespacketlength