问题描述
- python struct 解封包变长字符串 1C
- 码友们好,我想实现变长struct的解封包,功能类似下面这样,当然这样还行不通
#一个变长字串s='string data'#在串的前面写入串的长度然后写入串本身buf=struct.pack('i'+str(len(s))+'s' len(s) s)#网路接受。。。#先读出串的长度,然后按这个长度读出串lss=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
...
时间: 2024-11-08 18:22:34