码友们好,我想实现变长struct的解封包,功能类似下面这样,当然这样还行不通
#一个变长字串
s='string data'
#在串的前面写入串的长度然后写入串本身
buf=struct.pack('i'+str(len(s))+'s', len(s), s)
#网路接受。。。
#先读出串的长度,然后按这个长度读出串
l,ss=struct.unpack('i'+str(l)+'s', buf)
在此,先谢谢你的关注,如有指教不胜感激。
直接使用 s='0011string data' 不行吗?其中 0011 为字符串的长度,其固定占 4 个字节只是为了好解析。
你的长度字段应该是一个固定位数数据,这样你接收到数据后,知道先获取对应长度部分数据,然后根据长度再读取后面多长的数据内容。
已经解决了,谢谢各位,不好意思没有及时回复,列出解决方案
#一个变长字串
s='string data'
#在串的前面写入串的长度然后写入串本身
buf=struct.pack('i'+str(len(s))+'s', len(s), s)
#网路接受。。。
#先读出串的长度,然后按这个长度读出串
idx=0
l,=struct.unpack('i', buf[idx:idx+4])
idx+=4
ss,=struct.unpack(str(l)+'s', buf[idx:idx+l])
idx+=l
...