python - How can I convert a BitString to a ctypes Byte Array? -
i've started out bitstring , ctypes, , have part of binary file stored in startdata, bitarray class.
> print(startdata) 0x0000000109f0000000010605ffff   now, have pass data as-is c function takes unsigned char * argument, i'm first trying this:
buf = (c_ubyte * len(startdata))()   to this:
buf_ptr = cast(pointer(buf), pointer(c_ubyte))   this works, how assign byte data startdata array / buffer created?
this doesn't work:
> buf = (c_ubyte * len(startdata))(*startdata.bytes) typeerror: integer required      
here's possible solution (note i'm using python 3):
import ctypes  def bitarray_to_ctypes_byte_buffer(data):     """convert bitarray instance ctypes array instance"""     ba = bytearray(data.bytes)     ba_len = len(ba)     buffer = (ctypes.c_uint8 * ba_len).from_buffer(ba)     return buffer   (note: same apply converting bytes instance ctypes byte array, remove .bytes in data.bytes).
you can pass buffer c function using byref:
byref(buffer)      
Comments
Post a Comment