ein Problem, wo ich schon länger herumprobiere:
Wenn ich aus einer C/C++ Funktion ein byte array zurückliefern will, gehe ich folgendermassen vor:
zb Auszug aus C: (Werte habe ich jetzt direkt gesetzt, um leichter testen zu können)
Code: Alles auswählen
char read_buffer [1024];
DLLEXPORT char* StorageReadString(int offset, int size)
{
read_buffer[0] = 'a';
read_buffer[1] = 'b';
read_buffer[2] = '\0';
read_buffer[3] = 'a';
read_buffer[4] = '\0';
return read_buffer;
}
Code: Alles auswählen
mydll.StorageReadString.restype = ctypes.c_char_p
str = mydll.StorageReadString(offset, size)
for i in range(size):
print i, ord(str[i])
return str
Er müsste das nicht als string sehen, sondern als allgemeines byte array. Aber wie mache ich das in ctypes?
Zusatzfrage: Wie kann ich so ein array mit Nullbytes an C mit ctypes überreichen?