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