私はC言語を学び、pythonパッケージctypesを使用してより高いパフォーマンスを得るために.soをPythonファイルにインポートしようとしています。 .soファイルから返された文字列を取得しようとするときに苦労するまで、すべてうまくいった。Python ctypesは.soファイルから返された長い文字列値を取得できません
Cコード:
char *convert_to_16(char *characters, int n){
char sub_buffer[3];
char code[3];
char *buffer = (char*)malloc(sizeof(characters) * 2);
for(int i=0; i < n; i++){
strncpy(code, characters+i, 1);
sprintf(sub_buffer, "%x", *code);
strncat(buffer, sub_buffer, 2);
}
return buffer;
}
// main() only for test
int main(){
char param[] = "ABCDEFGHTUIKLL";
printf("%s\n", param);
int length = strlen(param);
printf("%s\n", convert_to_16(param, length));
}
これは出力とよく実行:
41424344454647485455494b4c4c
Pythonコード:
私は、公式ドキュメントを読んで、ctypes.c_char_pとしてRESTYPEを設定し、他の値に設定しようと:
それは動作しますが、2文字のみを返します。 。しかし、それが唯一の選択肢だと思われますが、奇妙なことに2文字しか返されませんでした。
私のctypes設定の問題か、Cが正しく書かれていないのですか? 多くのありがとうございます。
@Stargateurありがとう!私はもっと割り当てる必要があります。 – Castor