gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:48:32 25 4
gpt4 key购买 nike

我的C程序是这样的:

#include<stdio.h>

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

我的Python代码是:

from ctypes import *
sh_obj=cdll.LoadLibrary('./libfile.so')
sh_obj.test.restype=c_char_p

print sh_obj.test()

但我没有得到所需的输出。当前输出为:

�1

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

最佳答案

您可以使用restype POINTER(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" 的指针,这将打印以下内容:

[128, 49, 0, 0, 5]

这是十进制的无符号字节值。

关于python - 如何从C共享库返回无符号字符数组来调用python函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com