import ctypes
from ctypes import *
import sys
class A(Structure):
_fields_ = [("a",c_uint64),
("b",c_uint64),
("c",c_uint64),
("d",c_uint64),
("e",c_uint64),
("f",c_uint64),
("g",c_uint64),
("h",c_uint64),
("i",c_uint64),
("j",c_uint64),
("k",c_uint64),
("l",c_uint64),
("m",c_uint64),
("n",c_uint64),
("o",c_uint64),
("p",c_uint64),
("q",c_uint64),
("r",c_uint64*16),
("s",c_uint64*16),
("t",c_uint64*16),
("u",c_uint64*16),
("v",c_uint64*16),
("w",c_uint64),
("x",c_uint64),
("y",c_uint64),
("z",c_uint64)
]
class B(Structure):
_fields_ = [("a1",c_uint64),
("b1",c_uint64),
("c1",c_uint64)
]
class C(Structure):
_fields_ = [("a2",c_uint64*32),
("b2",c_uint64*32),
("c2",c_uint64)
]
class U_union(Union):
_fields_ = [("a3", A),
("b3",B),
("c3",C),
("d3",c_uint32),
("e3",c_uint32)
]
class ether_header(Structure):
_fields_ = [("ether_dhost", c_uint8*6),
("ether_shost", c_uint8*6),
("ether_type", c_uint16)
]
class D(Structure):
_fields_ = [ ("ether",ether_header),
("a4", c_uint8),
("b4", c_uint8),
("c4", c_uint8),
("d4", c_uint8),
("e4", c_uint16),
("f4",U_union),
]
class Send:
def __init__(self,a):
file=D()
print sizeof(file)
if __name__== "__main__":
Send("hello")
我必须发送830字节结构。这里有双填充(每个2字节)。 这是我的示例代码,ETHER_HEAD结构是14个字节,没有ether_head结构成员的FILE_HEAD是816个字节,而ether_head成员是832个字节。如何添加2个字节? 而我正在尝试其他scenerio喜欢只发送830字节像连接2个结构,但如果我为两个类创建两个对象引用并在objets之间制作+运算符它显示无法连接对象错误。我可以模拟它吗?