qt如何解读利用python 的struc.pack()函数打包的数据?

jiangxinhuan 2014-03-04 10:54:08
我在学习socket编程。想从python编写的客户端发送一个文件至qt编写的服务器端,文件的信息,如大小、名字等我用python的struct.pack()打包成了一个二进制数据包。现在qt能够收到这个数据包,但是我不知道该如何解读里面的信息,求指点。
如果有其他方法能解决这个问题也可以,不胜感激。
...全文
438 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangxinhuan 2014-03-06
  • 打赏
  • 举报
回复
问题解决了。 解决方法如下: python端打包方式: fhead = struct.pack('>qq5s',56,38,"hello") #大端朝上 #将文件总大小,文件名大小,文件名进行打包 sendSock.send(fhead) qt端解包方式: void Widget::receive_data() { char* buff = new char[6]; int lenbuff; QDataStream in(tcpServerConnection); //qt默认大端朝上 in.setVersion(QDataStream::Qt_4_6); qDebug() << this->tcpServerConnection->bytesAvailable(); qint64 a; qint64 b; in >> a ; in >> b ; lenbuff = in.readRawData(buff,6); QString fileName(buff); qDebug() << a << b << fileName << lenbuff; } 然后就成功得到了56,38,“hello”这些信息。
panghuhu250 2014-03-05
  • 打赏
  • 举报
回复
两头你都可以做主的话,也可以用json。
jiangxinhuan 2014-03-04
  • 打赏
  • 举报
回复
qt收到数据之后应该是qbytearry类型的。怎样才能强制转化成相应的struct?
angel_su 2014-03-04
  • 打赏
  • 举报
回复
不懂qt,貌似收发的buffer应该不会被封装成其他东西,定义一个一样的结构,强制转换即可...
jiangxinhuan 2014-03-04
  • 打赏
  • 举报
回复
楼上的大哥,我说的是用qt如何读取这个数据包。 用struct.unpack这不还是python吗,这个我知道的。。。。。
iasky 2014-03-04
  • 打赏
  • 举报
回复
struct.unpack

37,744

社区成员

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

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