如何从Python打印outdata3,outdata4值?

2024-09-29 22:01:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Python代码中获取outdata3,outdata4的值。 我用ctypes来调用c函数。 c函数如下:

#include <stdio.h>

void cfunction(int indata1, double indata2, int * outdata3, double * outdata4)
{
    int i;
    for (i = 0; i < indata1; ++i)
    {
        outdata3[i] = indata1;
        outdata4[i] = indata2;
        //printf("indata3 [%d] = %d\n", i, outdata3[i]);
        //printf("indata4 [%d] = %1.1f\n", i, outdata4[i]);     
    }
}

下面的代码是Python代码:

^{pr2}$

我可以从上面的代码得到下面的代码。在

[===>19:14:48]one+two:python test.py 
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>
<__main__.LP_c_long object at 0x93566ec>

但我想要下面的值。在

0.0 1.0 2.0 3.0 4.0 5.0
1.0 2.0 3.0 4.0 5.0 6.0
2.0 3.0 4.0 5.0 6.0 7.0
3.0 4.0 5.0 6.0 7.0 8.0
4.0 5.0 6.0 7.0 8.0 9.0

Tags: 函数代码objectmainctypesatlongint
1条回答
网友
1楼 · 发布于 2024-09-29 22:01:39

您向cfunction传递了错误的类型。您应该向cfunction传递一个int数组和一个double数组。在

outdata3 = (ctypes.c_int * 8)()
outdata4 = (ctypes.c_double * 8)()
fun(ctypes.c_int(8), ctypes.c_double(3.4), outdata3, outdata4)

def dump1(a,rows):
    for i in range(rows):
        print a[i]

dump1(outdata3, 8)

也可以将numpy数组传递给cfunction:

^{pr2}$

相关问题 更多 >

    热门问题