作者KSJ (阿真)
看板Python
标题Re: [问题] Python struct pack 动态填值
时间Sat Dec 3 01:11:52 2011
※ 引述《leeraphael (leeraphael)》之铭言:
: 各位先进好,请教一个问题,如下
: self.packet_struct = struct.Struct('>H H H B B B 3H')
: # 此处的3H会对应到G1,G2,G3
: # 问题来了,就是我的3H是希望可以动态变更的
: # 有时是2H or 3H or 4H 等等
稍稍看了一下 官方doc
如果希望是可以动态变更 应该是用动态建构吧?
# n = 动态的
self.packet_struct = struct.Struct('>H H H B B B '+ str( n ) + 'H')
: # 但是对应到G1, G2, G3 有办法用array去对应吗?
: # 因为我用int array, compiler会说少参数,因为array他还是只认为是一个参数
: values = (self.tx_packet,A\
: self.tx_packet.B, \
: self.tx_packet.C, \
: self.tx_packet.D, \
: self.tx_packet.E, \
: self.tx_packet.F, \
: self.tx_packet.G1,\
: self.tx_packet.G2,\
: self.tx_packet.G3)
: self.responce_data = self.packet_struct.pack(*values)
这里有点不懂
但是看起来 要9个变数得给它9个 要n个变数就给它n个
必须在变数 values 中的个数做一些整合处理
因为struct是动态建构的
values也该是
我认为你是想用 类似序列的东西
(int array??是指什麽 compiler又是@@? 好像c++的东西)
好比 G = (1, 2, 3) 或 G = (1, 2) ??
然後你塞 values = (a,b,c,d,...,G) 然後被当成一个G 就GG了
你可以先 value_first = (a,b,c,d,...) 做一个tuple
然後再 values = value_first + G 这样去变动values的长度
再放回去就行了
: 如果问题有不明白的地方,我会在补充说明
: 先谢谢大家了
如果我误解你的意思或是上面有误 还请告诉我
感恩
ps.有空不妨可以分享一下这个module(class)的用途与心得XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.176.140.46
1F:推 leeraphael:谢谢KSJ的说明,可以了。我晚点回文说明我的用途。 12/03 13:39
2F:→ leeraphael:现在要出门去。再次谢谢您 12/03 13:39