【发布时间】:2019-06-14 02:48:50
【问题描述】:
在python中可以处理非常大的整数(例如uuid.uuid4().int.bit_length()给出128),但C-API documentation提供的最大int数据结构是long long,它是64-bit int。
我希望能够从 PyLong 获得 C int128,但似乎没有工具可以做到这一点。例如PyLong_AsLongLong 无法处理大于2**64 的python 整数。
- 是否有一些我错过的文档,实际上是可能的?
- 目前是否不可能,但存在一些解决方法? (我很想使用带有 int128 的
long long的 python C-API 中可用的工具,例如PyLong_AsInt128AndOverflow函数。 - 这是即将发布的 python 版本中的计划功能吗?
【问题讨论】:
-
我认为您将 python 的任意长度整数与 c 的整数类型混淆了。假设
uuid.uuid4().int.bit_length() == 128(并非总是如此),您可以执行print((uuid.uuid4().int * 4).bit_length())之类的操作,并且您应该得到一个 -
我编辑了我的帖子,所以它更准确。我唯一想做的就是从 python
PyLong获得一个 Cint128。
标签: python cpython python-c-api int128