pythonintegerfixed-width

Fixed width integer types (e.g. uint32) in Python


Certain mathematical operations, especially on data read from hardware drivers, can depend on fixed width of the data type. Example: bitwise shift. What is the Pythonic way of creating integer variables with fixed width (e.g. uint32, int16 etc.) that would overflow/shift accordingly?


Solution

  • I would suggest the fixedint library. The classes in that library are named in the following convention:

    [Mutable][U]Int<N>
    

    So for your two examples, the classes would be

    #    C++                 Python fixedint
     std::uint32                 UInt32
     std::uint16                 UInt16
    

    This supports things like bit-shifting, etc

    >>> a = fixedint.UInt32(14)
    >>> a
    UInt32(14)
    >>> a << 2
    UInt32(56)