On Aug 1, 11:35 pm, Andrew Lentvorski <[EMAIL PROTECTED]> wrote:
> Basically, I'd like to use the ctypes module as a much more descriptive
> "struct" module.
>
> Is there a way to take a ctypes.Structure-based class and convert it
> to/from a binary string?
>
> Thanks,
> -a

After chugging through the ctypes source code, I found that I can
abuse ctypes into doing what I want.

Here is how I did it.  I can abuse
string_at(addressof(SomeCtypesClass), length) to get a binary string
out of ctypes while I use:

def analyze_elf_header(binaryData):
    headerSize = ctypes.sizeof(Elf32_Ehdr)
    header = Elf32_Ehdr()

    # Abuse ctypes to initialize from a string
    bb = ctypes.create_string_buffer(binaryData[0:headerSize])
    ctypes.memmove(ctypes.addressof(header), ctypes.addressof(bb),
headerSize)

To jam stuff into a ctypes class.  This seems like an oversight in the
module though.  It would really be better if the class itself had
methods to init from/produce to a binary string.

However, I would prefer that somebody who actually knows ctypes to
weigh in here with comments about what I did.

Thanks,
-a
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to