ctypes: how to make a structure pointer to point to a buffer

Diez B. Roggisch deets at nospam.web.de
Mon Apr 23 05:42:33 EDT 2007


人言落日是天涯,望极天涯不见家 wrote:

> first, I'm try the POINTER to convesion the pointer type. but failed.
> 
> class STUDENT(Structure):
>     _fields_ = [('name',  c_int),
>                     ('id',   c_int),
>                     ('addition',    c_ubyte)]
> 
> buffer = c_byte * 1024
> student_p = cast(buffer, POINTER(STUDENT))
> 
> The parameter of the POINTER must be ctypes type.
> How could I attach the buffer pointer to the structure STUDENT ?

I think it should work like this:

from ctypes import *

class STUDENT(Structure):
    _fields_ = [('name',  c_int),
                    ('id',   c_int),
                    ('addition',    c_ubyte)]

buffer = (c_byte * 1024)()
buffer_p = pointer(buffer)
student_p = cast(buffer_p, POINTER(STUDENT))

print student_p


Diez



More information about the Python-list mailing list