2017-01-16 143 views
1

我想要绑定多个大小的数据,如一个字节值,两个字节值,一个字节值,然后是字符串。 这是一个由简单的聊天客户端发送的数据包。将C数据类型转换为Python

我想要的网络包在图中。总共4个字节的头部,后面跟着body。 enter image description here

我该如何使这个数据包由Python?

有没有解决方案来存储大小的明确定义的数据?

回答

3

您正在寻找Python's struct。这里有一个如何做你与struct问的一个例子:

from struct import * 
header = pack('!chcs', clientID, bodySize, networkMessageId, body) 

现在header将有包在里面,你可以在(你需要用它做或其他)网络发送。

既然你的图片显示“网络”,我认为这需要在网络字节顺序,这就是开始意味着!

+0

非常感谢你! 但是我怎样才能定义成员的大小? 特别是,我想在bodysize中存储2字节值 –

+0

请参阅我链接的[struct]的文档([或者直接跳转到此表](https://docs.python.org/2/library/struct html的#格式字符))。给“pack”的字符串中的字符指定了大小。 “c”表示一个单字节,“h”表示一个短整数(根据python的定义,短整数是两个字节),'s'表示一个字符串。 –

+0

所以字符串'!chcs'的字面意义如下:“将以下参数按网络字节顺序放入大小为1个字节,2个字节,1个字节和一个字符串的数组中。请注意,我组成了“clientID”,“networkMessageId”等名称,您应该将其替换为要发送的数据。 –

相关问题