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.pack
和 struct.unpack
不仅可以处理固定宽度,还可以处理字节顺序问题。请参阅 python 2 or python 3 库手册。
某些数学运算,尤其是从硬件驱动程序读取的数据,可能取决于数据类型的固定宽度。示例:按位移位。创建具有固定宽度的整数变量(例如 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.pack
和 struct.unpack
不仅可以处理固定宽度,还可以处理字节顺序问题。请参阅 python 2 or python 3 库手册。