Python 中的固定宽度整数类型(例如 uint32)

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

某些数学运算,尤其是从硬件驱动程序读取的数据,可能取决于数据类型的固定宽度。示例:按位移位。创建具有固定宽度的整数变量(例如 uint32、int16 等)的 Pythonic 方法是什么 overflow/shift 相应?

我建议使用 fixedint 库。该库中的 类 按照以下约定命名:

[Mutable][U]Int<N>

因此对于您的两个示例,类 将是

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

这支持位移等

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

为了与硬件接口,我们通常使用 struct 标准库 - 特别是 struct.packstruct.unpack 不仅可以处理固定宽度,还可以处理字节顺序问题。请参阅 python 2 or python 3 库手册。