Python ctypes变量内容问题

2024-10-03 15:29:20 发布

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

我正在使用以下DLL函数

int ReadMemU32(long address , long *pdata)

我把它与byref的ctypes一起使用,如下所示:

^{pr2}$

当我检查它的值时,我注意到:

>>> read_data
c_ulong(55L)
>>> read_data == 55
False
>>> read_data == c_ulong(55L)
False

为什么是假的?在

如果我这样做:

# my_memory is of type Class(Structure) with c_ulong field names read_data
my_memory.read_data = read_data

并检查结果:

>>> my_memory.read_data 
55L
>>> my_memory.read_data == 55
True

有什么区别?在


Tags: 函数falsereaddataaddressmyctypeslong
1条回答
网友
1楼 · 发布于 2024-10-03 15:29:20

对于您的代码,只需使用:

read_data.value == 55

动机:

^{pr2}$

之所以发生这种情况,是因为ctyps没有为C对象实现正确的Python比较——它测试对象标识,这是默认情况。但是,如果比较每个对象的“.value”属性,就可以了。在

相关问题 更多 >