首页 > 解决方案 > 在 python 中“重新创建”原始 256 字节 UDP 帧的最佳方法?

问题描述

我不太确定在 python 中重新创建 UDP 帧的最佳方法是什么……我想到的一件事是使用__init__方法创建类,而另一种方法就是从字面上创建一个字典。基本上框架被分成5块:

前 4 个字节 (0-3) 用于标题描述。

接下来的 32 个字节 (4-35) 用于公共数据。

接下来的 16 个字节 (36-51) 都是空的。

接下来的 4 个字节(52-55)用于描述有效载荷。

最后 200 个字节用于有效负载。

前 4 部分(标题、通用、16 字节空、有效负载描述)都是从一堆其他文件中解析出来的,而有效负载在int.

逐个重新创建框架的最佳方法是什么?以下片段是第一个想法:

class common:
    def __init__(self, par1, par2):
        self.par1 = par1
        self.par2 = par2

class header:
    def __init__(self, par1, par2):
        self.par1 = par1
        self.par2 = par2

class empty:
    def __init__(self):
        self.par1 = 16*[[0]]

class description:
    def __init__(self, par1, par2):
        self.par1 = par1
        self.par2 = par2

class udp_frame:
    def __init__(self, payload, h_par_1, h_par_2, c_par_1, c_par_2, d_par_1, d_par_2,):
        self.payload = payload
        self.header = header(h_par_1, h_par_2)
        self.common = common(c_par_1, c_par_2)
        self.empty = empty()
        self.description = description(d_par_1, d_par_2)

    def create_frame(self):
        temp = [self.header.par1,
                self.header.par2,
                self.common.par1,
                self.common.par2,
                self.empty.par1,
                self.description.par1,
                self.description.par2,
                self.payload
                ]
        while len(temp) < 256:
            temp.extend(0)

        return bytearray(temp)

还有其他更吸引眼球/高效/标准化的方式来做这种事情吗?

标签: python

解决方案


推荐阅读