修复了Python中的宽度整数类型(例如uint32)

时间:2015-06-30 17:57:19

标签: python integer fixed-width

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

2 个答案:

答案 0 :(得分:2)

我会建议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)

答案 1 :(得分:2)

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