python ctypes:从指针变量中获取指向类型

时间:2017-12-18 10:29:51

标签: python pointers types structure ctypes

我有一个包含原始字段(int,uint8,...)和指针的结构。 这些指针通常指向不同结构类型的数组,以便保持深层嵌套的结构。 例如在C:

struct A
{
 int field1;
 int field2;
 struct B *fields3;
 unsigned int countofb;
}

struct B
{
  int anotherfield1;
  int anotherfield2;
}

在带有ctypes的python中,我创建了结构A和B的包装器。 迭代结构A的_fields_我到达第三个字段field3,我得到一个LP_struct_B类型的ctype变量。

问题是,有没有一种方法,一种函数,一种将指针转换为指向类型的ctypes方法?

我需要像

这样的东西
a=A()
st=pointedtype(a.field3) # or also st = pointedtype2(LP_struct_B)
#desired output: st = struct_B

感谢

1 个答案:

答案 0 :(得分:2)

确定。 我凭经验找到了答案。 只需使用变量或指针类型

的属性_type_
a=A()
print a.fields3._type_ # struct_B
tipo=type(a.fields3) # tipo=LP_struct_B
print tipo._type_ # struct_B