Ich habe eine Funktion in C erstellt, die eine int-Größe und einen char * -Puffer als Argumente verwendet. Ich möchte Ctypes verwenden, um diese Funktion von Python aufzurufen und in einem Python-ByteArray übergeben. Ich weiß, dass Sie zuerst die C-Datei in eine gemeinsame Bibliothek (.so-Datei) kompilieren müssen und Ctypes verwenden, um diese Funktion aufzurufen. Hier ist der Code, den ich bisher habe.Wie kann ich mit Ctypes ein ByteArray in eine C-Funktion übergeben, die ein char * als Argument verwendet?
encrypt.c:
#include <stdio.h>
void encrypt(int size, unsigned char *buffer);
void decrypt(int size, unsigned char *buffer);
void encrypt(int size, unsigned char *buffer){
for(int i=0; i<size; i++){
unsigned char c = buffer[i];
printf("%c",c);
}
}
void decrypt(int size, unsigned char *buffer){
for(int i=0; i<size; i++){
unsigned char c = buffer[i];
printf("%c",c);
}
}
Und hier ist die Python-Datei:
import ctypes
encryptPy = ctypes.CDLL('/home/aradhak/Documents/libencrypt.so')
hello = "hello"
byteHello = bytearray(hello)
encryptPy.encrypt(5,byteHello)
encryptPy.decrypt(5,byteHello)
Grundsätzlich möchte ich die C-Methode von Python nennen, ein Python-Byte-Array durchlaufen, und haben es iterieren durch die Anordnung und drucken jedes Element