python struct.unpack的使用问题

power0811 2013-10-10 03:02:23
我通过socket 接收的数据是 一个二进制流的消息体, 前4个字节是int型, 表示随后的字符串长度, 后面是字符串, 然后又是4字节整型, 表示字符串长度, 后面是字符串, 如此反复, 我用 struct.unpack 该怎么解这个消息体呢? 多谢
...全文
574 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-10-10
  • 打赏
  • 举报
回复
这么简单还要库?

i = 0
s = []
while i < len(bytes):
    n = int(bytes[i:i + 4].decode())
    i += 4
    s.append(bytes[i: i + n])
    i += n
没测试,自己测试看看有没有错
power0811 2013-10-10
  • 打赏
  • 举报
回复
没有现成的库可以用么?? 就是不用自己去实现的
iasky 2013-10-10
  • 打赏
  • 举报
回复
unpack的第一个参数
ImN1 2013-10-10
  • 打赏
  • 举报
回复
io都有 read,就算bytes也可以做切片啊,自己算算 [:] 的index 如果直接就是bytes,也不用unpack了,切片四个字节,转整数就是了
power0811 2013-10-10
  • 打赏
  • 举报
回复
感谢您的回答 , 不过我得到的消息体放在一个变量里面了... 有read这个属性么?? 应该是str类型吧...
ImN1 2013-10-10
  • 打赏
  • 举报
回复
a=unpack('i4', f.read(4)) b=unpack('s', f.read(a))
power0811 2013-10-10
  • 打赏
  • 举报
回复
有人知道么 自己顶一下

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧