本文参考:https://docs.python.org/2/library/struct.html#struct-format-strings
本文是我使用socket测试网络接口写的消息头,其中包含以下内容:
(1)通过Python的struct模块将C的结构体转换成Python语言(struct.Struct)
(2)打包和解包(pack_into和unpack_from)
(3)序列化和反序列化(SerializeToString和ParseFromString)
C语言的消息头如下,是个C的结构体:
#pragma pack(1)
struct PduHead{
unsigned int flag;
unsigned short packet_len;
unsigned int cmd;
unsigned char version;
unsigned char reserve[1];
unsigned char body[0];
};
#pragma pack()
将C语言的消息头转换为Python类,其中reserve[1]是保留字,不用管,body[0]是个长度为0的数组,保存body的首地址,也不用管。转换后如下
import struct
import ctypes
class PduHead(object):
def __init__(self,