我在Python中编写了一个小测试程序,以便在多种情况下测试一些C函数。这个Python程序使用 ctypes
导入和使用我的C函数。
但是,我还想测试最小值和最大值的情况(例如 limits.h
的 ULLONG_MAX
)。
但由于这些限制之一可能取决于系统,所以我更愿意避免在程序中对其进行硬编码; 我宁愿动态获取它。
是否可以在Python中获取这些限制值?
我在Python中编写了一个小测试程序,以便在多种情况下测试一些C函数。这个Python程序使用 ctypes
导入和使用我的C函数。
但是,我还想测试最小值和最大值的情况(例如 limits.h
的 ULLONG_MAX
)。
但由于这些限制之一可能取决于系统,所以我更愿意避免在程序中对其进行硬编码; 我宁愿动态获取它。
是否可以在Python中获取这些限制值?
ctypes.sizeof(whatever_type)
这将告诉你类型的字节数。例如,你可以使用ctypes.sizeof(ctypes.c_int)
来确定一个字节是4个字节、8个字节还是其他奇怪的数字。
c_uint(-1).value
表示无符号限制,并将无符号最大值除以2以获取有符号最大值。 - Eryk Sunc_uint(-1)
是否受支持。 - user2357112ctypes.c_uint(-1).value // 2
用于 INT_MAX
,而 (-ctypes.c_uint(-1).value) // 2
用于 INT_MIN
。 - vmontecoPyLong_AsUnsignedLong[Long]Mask
设置简单整数ctype的值,然后进行目标C类型的转换。但文档不是很清楚。 - Eryk Sun