I'm looking for a way to get (using Python) the maximum and minimum values of C types integers (ie uint8
, int8
, uint16
, int16
, uint32
, int32
, uint64
, int64
...) from Python.
I was expecting to find this in ctypes
module
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)
but I couldn't find it.
Julia have great feature for this:
julia> typemax(UInt8)
0xff
julia> typemin(UInt8)
0x00
julia> typemin(Int8)
-128
julia> typemax(Int8)
127
I'm pretty sure Python have something quite similar.
Ideally I'm even looking for a way to ensure that a given Python integer (which is said to be unbounded) can be converted safely in a C type integer of a given size. When number is not in expected interval, it should raise an exception.
Currently overflow doesn't raise exception:
In [4]: ctypes.c_uint8(256)
Out[4]: c_ubyte(0)
I saw this SO post Maximum and Minimum values for ints but it's a bit different as author is looking for min/max value of a Python integer... not a C integer (from Python)
I also noticed Detecting C types limits ("limits.h") in python? but, even if it's quite related, it doesn't really answer my question.