【问题标题】:Creating a pointer to a 2D char array in Python在 Python 中创建指向 2D 字符数组的指针
【发布时间】:2020-07-07 15:00:13
【问题描述】:

我有一些用 python 包装的 C 代码。作为此代码的一部分,它会生成一个指向 2D 字符数组的指针(较大表中的字符串对)。

我想要一种在 python 中生成兼容表并将指针传递给 C 的方法。该点需要是 LP_LP_char_p 类型,并且需要能够被引用为 ptr[2][1] 或类似的。

【问题讨论】:

    标签: python arrays c


    【解决方案1】:

    我创建了一些有效的代码,所以我在这里发布:

    从 ctypes 导入 POINTER、指针、c_char、c_char_p、addressof、cast

    rows = 13
    cols = 2
    line_len = 12
    type_char_p = POINTER(c_char_p)
    type_char_pp = POINTER(POINTER(c_char_p))
    
    char_p_array = ((c_char_p * cols) * rows)()
    char_pp_array = (type_char_p * rows)()
    
    for i in range(rows):
        for j in range(cols):
            char_p_array[i][j] = f'msg {i} {j}'.encode('raw_unicode_escape')
        char_pp_array[i] = char_p_array[i]
        
    p = cast(char_pp_array, type_char_pp)
    
    In:     p
    Out:    <__main__.LP_LP_c_char_p at 0x28acdb477c8>
    
    In:     p.contents.contents.value
    Out:    b'msg 0 0'
    
    In:     p[0][0]
    Out:    b'msg 0 0'
    
    In:     p[1][1]
    Out:    b'msg 1 1'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 2016-12-02
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多