我在C中有一个函数,它从给定的缓冲区中逐字节读取并返回数学公式的结果 我需要在Python中编写相同的函数
C中的缓冲区是 struct ,在python中我使用 ctypes结构类
我在c中的原型是int calc_formula(char *buff,int len)
所以在c中调用函数是明星前进,但我如何在Python中定义这样的函数?
我尝试定义以下内容并提出一些问题
def calc_formula(buff,len):
some code
更新
我尝试了 bbrame 解决方案:
def calc_formula(buff, len):
sum = 0
for curChar in buff:
numericByteValue = ord(curChar)
sum += numericByteValue
return sum
当我用calc_formula(input_buff,len)尝试其代码时,我得到以下内容:
" *错误:TypeError:' t_input_buff'对象不可迭代*" - input_buff是t_input_buff的实例,它是Class(Structure)。可能是什么问题?
(它在尝试执行for命令时给出错误)
答案 0 :(得分:1)
在c中,尝试使用类型c_char_p而不是char *(see the ctypes documentation)。
在python中,参数(buff)将是一个python字符串。按如下方式循环:
def calc_formula(buff, len):
sum = 0
for curChar in buff:
numericByteValue = ord(curChar)
sum += numericByteValue
return sum
答案 1 :(得分:0)
<强>更新强> 我用 ctypes union class 解决它 在this question
中查看答案