python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组

我在

Python 2.7中有一个字符串数组,我想通过ctypes传递给C函数:

unsigned int SetParams(unsigned int count, const char **params)

所以我可以在python中定义参数:

import ctypes as ct

lib = ct.cdll.LoadLibrary('...')

lib.SetParams.restype = ct.c_uint

lib.SetParams.argtypes = [ct.c_uint, ct.POINTER(ct.c_char_p)]

但是现在当我在Python函数中给出一组参数时,我想在上面的库调用中使用它,我该如何实际调用它?我在想这样的事情:

def setParameters(strParamList):

numParams = len(strParamList)

strArrayType = ct.c_char_p * numParams

strArray = strArrayType()

for i, param in enumerate(strParamList):

strArray[i] = param

lib.SetParams(numParams, strArray)

我刚开始使用ctypes并想知道是否有更自动化的方法来执行此操作?赋值strArray [i] = param实际上是重新分配的吗?如果是这样,这似乎相当昂贵 – 有没有办法这样做只是将字符串指针指向Python分配的缓冲区,或者它们不是以NULL结尾?

更新我确实查看了几个相关的问题,但找不到直接处理相同问题的问题.非常感谢你

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值