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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 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

谢谢

答案

好。我凭经验找到了答案。只需使用变量或指针类型的属性_type_

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

以上是关于python ctypes:从指针变量中获取指向类型的主要内容,如果未能解决你的问题,请参考以下文章

Python & Ctypes:将结构作为指针传递给函数以获取数据

Python ctypes:如何释放内存?获取无效指针错误

Python ctypes:如何释放内存?获取无效指针错误

ctypes给扩展模块中的函数传递回调函数

Python ctypes 中的指针和数组

使用 ctypes 传递结构指针