我有一个C文件,有一堆#defines用于我想从python引用的位.有足够的它们,我宁愿不将它们复制到我的python代码中,而是有一种可接受的方法直接从python引用它们?
注意:我知道我可以打开头文件并解析它,这很简单,但如果有更多的pythonic方式,我想使用它.
编辑:
这些是非常简单的#define,用于定义掩码中位的含义,例如:
#define FOO_A 0x3
#define FOO_B 0x5
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方式来获得(使用Python)(即C型整数最大值和最小值uint8,int8,uint16,int16,uint32,int32,uint64,int64从Python的...)。
我期待在ctypes模块中找到它
In [1]: import ctypes
In [2]: ctypes.c_uint8(256)
Out[2]: c_ubyte(0)
In [3]: ctypes.c_uint8(-1)
Out[3]: c_ubyte(255)
Run Code Online (Sandbox Code Playgroud)
但我找不到
朱莉娅(Julia)具有出色的功能:
julia> typemax(UInt8)
0xff
julia> typemin(UInt8)
0x00
julia> typemin(Int8)
-128
julia> typemax(Int8)
127
Run Code Online (Sandbox Code Playgroud)
我很确定Python具有类似的功能。
理想情况下,我什至在寻找一种方法来确保可以将给定的Python整数(据说是无界的)安全地转换为给定大小的C类型整数。如果数字不在预期的间隔内,则应引发异常。
当前溢出不会引发异常:
In [4]: ctypes.c_uint8(256)
Out[4]: c_ubyte(0)
Run Code Online (Sandbox Code Playgroud)
我看到了这样的整数值的最大值和最小值,但是由于作者正在寻找Python整数的最小值/最大值,所以有点不同……而不是C整数(来自Python)
我还注意到在python中检测C类型限制(“ limits.h”)?但是,即使它很相关,也不能真正回答我的问题。