python数据结构包括什么_python有什么实现自定义的通信协议数据结构的好方法吗?...

在C语言中,定义TCP协议数据结构可以利用struct、位域和联合,使得数据操作和串行通信变得简单。然而,在Python中,这种直接的数据结构定义和操作方式变得复杂。Python中可以通过字典或类来表示协议,但面临字节限制、位操作和数据打包的挑战。一种笨拙的方法是逐个字段处理并构建bytearray。寻求更高效的Python解决方案。
摘要由CSDN通过智能技术生成

用软件做数据通信协议的时候,往往需要定义相应的协议数据结构,

这个工作如果用c的struct,位域和联合这些技术的话,非常方便

struct tcp {

uint16 source; /* Source port */

uint16 dest; /* Destination port */

int32 seq; /* Sequence number */

int32 ack; /* Acknowledgment number */

uint16 wnd; /* Receiver flow control window */

uint16 checksum; /* Checksum */

uint16 up; /* Urgent pointer */

uint16 mss; /* Optional max seg size */

uint8 wsopt; /* Optional window scale factor */

uint32 tsval; /* Outbound timestamp */

uint32 tsecr; /* Timestamp echo field */

struct {

unsigned int congest:1; /* Echoed IP congestion experienced bit */

unsigned int urg:1;

unsigned int ack:1;

unsigned int psh:1;

unsigned int rst:1;

unsigned int syn:1;

unsigned int fin:1;

unsigned int mss:1; /* MSS option present */

unsigned int wscale:1; /* Window scale option present */

unsigned int tstamp:1; /* Timestamp option present */

} flags;

};

这样无论是对数据体内的任何数据做读写操作,都非常简单;需要通信的时候,只要把结构体头地址和数据长度送给通信接口,数据就可以看成按照定义的顺序的一个大数组,可以直接做串行通信发送.

但这个工作如果用python的话,该怎么做呢?

不管是用字典,还是用class,都有几个问题:首先就是每数据段字节如何限定的问题? 其次是bit数据如何定义?最后,保证在发送的时候将数据结构转换成一个符合要求的串行list呢?

笨办法倒是也能比较直观的想出来: 就是该咋设置咋设置, 最多设置的方法里加一级检查, 发送的时候, 一个个提出来append到一个bytearray里. 但觉得这样比较笨, 想问问还有没有更高级一点的解决方案没有?

thx!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值