如何将无符号字符数组从C共享库返回到调用python函数

2024-05-15 22:01:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的C程序是:

#include<stdio.h>

unsigned char* test()
{
    unsigned char* abc = "\x80\x31\x00\x00\x05";
    return abc;
}

我的Python代码是:

^{pr2}$

但是我没有得到想要的输出。 电流输出为:

??1

如何获得正确的输出?我需要与输入格式相同的输出。在


Tags: 代码test程序returninclude电流abcstdio
1条回答
网友
1楼 · 发布于 2024-05-15 22:01:13

您可以使用restypePOINTER(c_ubyte),如下所示:

from ctypes import *
sh_obj=cdll.LoadLibrary('./libfile.so')
sh_obj.test.restype=POINTER(c_ubyte)
ret=sh_obj.test()
retl=[ret[i] for i in range(5)]
print(retl)

如果C test()函数返回一个指向字符串"\x80\x31\x00\x00\x05"的指针,则将打印以下内容:

^{pr2}$

它们是十进制的无符号字节值。在

相关问题 更多 >