Python中的嵌套结构数组

时间:2017-04-03 19:04:18

标签: python c++

我在C ++中有一个如此定义的结构:

typedef struct __attribute__((packed)){
    uint16_t nb_elements; //2 bytes
    struct __attribute__((packed)){ // 6 bytes
        uint8_t identifier1; // 1 byte
        uint8_t identifier2; // 1 byte
        float my_data; // 4 bytes
    } element[];
} sElements;

(注意element结构嵌套在sElements结构中)。

我想用Python做同样的事情(使用ctypes),我现在正在努力:

from ctypes import *    

class element(Structure):
  _fields_ = [("identifier1", c_uint, 8),
          ("identifier2", c_uint, 8),
          ("my_data", c_float, 64)]

class sElements(Structure):
  _fields_ = [("nb_elements", c_uint, 16)
          #I don't know what to put here !
         ]

我怎样才能在Python中重现这个嵌套结构数组?

1 个答案:

答案 0 :(得分:1)

这是我做的,它并没有完全回答这个问题,但它解决了我的问题:(使用bitstring)

import bitstring

class element():
    def __init__(self):
        self.identifier1 = None #uint:8
        self.identifier2 = None #uint:8
        self.my_data = None #float:64

    def serialize(self):
        return bitstring.pack('uint:8, uint:8, float:64', self.identifier1, self.identifier2, self.my_data)


class sElements():
    def __init__(self):
        self.nb_elements = None #uint:16
        self.element = [] #element list

    def serialize(self):
        serialized = bitstring.pack('uint:16', self.nb_elements)
        for elt in self.element:
            serialized += elt.serialize()
        return serialized

模块化可能的字节序问题,它允许以我想要的方式存储这些数据(并发送它们)。