【问题标题】:Fixed width integer types (e.g. uint32) in PythonPython 中的固定宽度整数类型(例如 uint32)
【发布时间】:2015-06-30 17:57:18
【问题描述】:

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

【问题讨论】:

  • fixedint 库。它们处理典型的位摆弄和位集操作。
  • fixedint 看起来不错!谢谢!我认为这是一个应该成为答案的评论。

标签: python integer fixed-width


【解决方案1】:

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

【讨论】:

  • 另一个选项是nativetypes,它还支持浮点值和自定义类型别名。
【解决方案2】:

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

【讨论】:

  • 这也是一个需要记住的有用包。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多