python 向c 传递二维int类型的指针,char类型的指针

  1. int类型的
    c_int_arrs = []
    for num in range(len(p_num_temp)):
        lead_pos_arr = (ctypes.c_int*p_num_temp[num])()
        for i in range(p_num_temp[num]):
            lead_pos_arr[i] = p_pos_list[num][i]
        c_int_arrs.append(ctypes.cast(lead_pos_arr,ctypes.POINTER(ctypes.c_int)))
    P_Locs_temp=(ctypes.POINTER(ctypes.c_int)*2)(*c_int_arrs)
    这里的2,指的是c_int_arrs的个数
  2. char类型
    char**P的问题:
    
    c_char_datas = (ctypes.c_char_p * file_num)()
    for j in range(file_num):
        c_char = (ctypes.c_char*6)()
        c_char.value = file_list[j].name.encode('utf-8')
        c_char_datas[j] = ctypes.c_char_p(c_char.value)
    
    
  3. import array

    = array.array('d',[1,2,3])

    print(a)

    ptr = a.buffer_info()  # 返回tuple:(地址, 长度)

    print(ptr[0])

    print(ctypes.cast(ptr[0], ctypes.POINTER(ctypes.c_double)))  # 目标地址存入指针

  4.  # Cast from array.array objects

        def from_array(self, param):

            if param.typecode != 'd':

                raise TypeError('must be an array of doubles')

            ptr, _ = param.buffer_info()

            return ctypes.cast(ptr, ctypes.POINTER(ctypes.c_double))

     

        # Cast from lists/tuples

        def from_list(self, param):

            val = ((ctypes.c_double)*len(param))(*param)

            return val

     

        from_tuple = from_list

     

        # Cast from a numpy array

        def from_ndarray(self, param):

            return param.ctypes.data_as(ctypes.POINTER(ctypes.c_double))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼位位

给点辛苦费0.1元

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值