使用reference指定的变量进行ctypes到int的转换

2024-09-30 01:32:42 发布

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

def t(n):
    print(n)

t(byref(c_int(5)))

打印<cparam 'P' (0000019607137590)>

如何将上面的打印行转换为pythonint?这样它就可以简单地打印5

我试过使用c_int(n).value,但没有成功。在


Tags: valuedefintprintpythonintbyrefcparam
1条回答
网友
1楼 · 发布于 2024-09-30 01:32:42

byref用于(快速)传递到C级函数;如果您需要在Python层使用指针,请使用pointer(速度慢,但在Python中可访问);对于指针类型,可以使用索引取消引用(因为这是一个单值,它是[0]):

def t(n):
    print(n[0])
    # Or to get back the c_int without converting to Python int:
    # print(n.contents)

t(pointer(c_int(5)))

但是,如果您只想在Python中传递c_int,那么不管怎样,c_int都是引用,所以您可以只执行以下操作:

^{pr2}$

分配给n.value或从中读取c_int将更改调用者的c_int。在

相关问题 更多 >

    热门问题