当我用数组作为字段定义 ctypes 结构时,c_char
我无法获得该字段的大小,但如果我切换到c_ubyte
数组,我可以。我的理解是,在以下示例中,Python 将bar2
其视为指针 (char*),而不是bar1
. 如果有人能解释其背后的逻辑,我将不胜感激。
import ctypes
class Foo(ctypes.Structure):
_fields_ = [ ('bar1', ctypes.c_ubyte*1),
('bar2', ctypes.c_char*1) ]
foo = Foo()
for f,t in foo._fields_:
print t
print ctypes.sizeof(foo.bar1)
print ctypes.sizeof(foo.bar2)
这是输出:
<class '__main__.c_ubyte_Array_1'>
<class '__main__.c_char_Array_1'>
1
Traceback (most recent call last):
File "test.py", line 12, in <module>
print ctypes.sizeof(foo.bar2)
TypeError: this type has no size