长整数对象

  • PyLongObject

    • PyObject的此子类型表示 Python 长整数对象。
  • PyTypeObject PyLong_Type

    • PyTypeObject的此实例表示 Python 长整数类型。这是与longtypes.LongType相同的对象。

在版本 2.2 中更改:接受允许的子类型。

2.2 版中的新Function。

  • PyObject * PyLong_FromLong(长* v *)
    • 返回值:新参考.

从* v 返回一个新的PyLongObject对象,如果失败则返回 NULL *。

  • PyObject * PyLong_FromUnsignedLong(无符号长* v *)
    • 返回值:新参考.

从 C unsigned long返回一个新的PyLongObject对象,如果失败则返回* NULL *。

  • PyObject * PyLong_FromSsize_t(Py_ssize_t * v *)
    • 返回值:新参考.

从 C Py_ssize_t返回一个新的PyLongObject对象,如果失败则返回* NULL *。

2.6 版的新Function。

  • PyObject * PyLong_FromSize_t(size_t * v *)
    • 返回值:新参考.

从 C size_t返回一个新的PyLongObject对象,如果失败则返回* NULL *。

2.6 版的新Function。

  • PyObject * PyLong_FromLongLong(PY_LONG_LONG * v *)
    • 返回值:新参考.

从 C long long返回一个新的PyLongObject对象,如果失败则返回* NULL *。

  • PyObject * PyLong_FromUnsignedLongLong(未签名的 PY_LONG_LONG * v *)
    • 返回值:新参考.

从 C unsigned long long返回一个新的PyLongObject对象,如果失败则返回* NULL *。

  • PyObject * PyLong_FromDouble(双* v *)
    • 返回值:新参考.

从* v 的整数部分返回一个新的PyLongObject对象,如果失败则返回 NULL *。

  • PyObject * PyLong_FromString(char *str ,char * pend *,int * base *)
    • 返回值:新参考.

根据* str 中的字符串值返回一个新的PyLongObject,该字符串值根据 base 中的基数进行解释。如果 pend 不为 NULL ,则* pend 将指向 str 中的第一个字符,该字符紧跟数字的表示形式。如果 base 0,则基数将根据 str 的前导字符来确定:如果 str '0x''0X'开头,则将使用基数 16;如果 str '0'开头,则将使用基数 8;否则将使用基数 10.如果 base *不是0,则它必须介于236之间(包括_)。前导空格将被忽略。如果没有数字,则将引发ValueError

  • PyObject * PyLong_FromUnicode(Py_UNICODE ** u *,Py_ssize_t * length *,int * base *)
    • 返回值:新参考.

将 Unicode 数字序列转换为 Python 长整数值。第一个参数* u 指向 Unicode 字符串的第一个字符, length 给出字符数, base *是转换的基数。基数必须在[2,36]范围内;如果超出范围,将引发ValueError

1.6 版中的新Function。

在版本 2.5 中更改:此函数对_length *使用了int。这可能需要更改您的代码以正确支持 64 位系统。

  • PyObject * PyLong_FromVoidPtr(void ** p *)
    • 返回值:新参考.

从指针* p *创建一个 Python 整数或长整数。可以使用PyLong_AsVoidPtr()从结果值中检索指针值。

版本 1.5.2 中的新Function。

在版本 2.5 中进行了更改:如果该整数大于 LONG_MAX,则返回一个正长整数。

  • PyLong_AsLong(PyObject ** pylong *)
    • 返回* pylong 内容的 C long表示形式。如果 pylong *大于LONG_MAX,则引发OverflowError并将返回-1
  • long PyLong_AsLongAndOverflow(PyObject *pylong ,int overflow *)
    • 返回* pylong 内容的 C long表示形式。如果 pylong *大于LONG_MAX或小于LONG_MIN,请将 overflow 分别设置为1-1,然后返回-1;否则,将 overflow 设置为0。如果发生任何其他异常(例如 TypeError 或 MemoryError),则将返回-1,并且 overflow *将是0

2.7 版的新Function。

  • PY_LONG_LONG PyLong_AsLongLongAndOverflow(PyObject *pylong ,int overflow *)
    • 返回* pylong 内容的 C long long表示形式。如果 pylong *大于PY_LLONG_MAX或小于PY_LLONG_MIN,请将 overflow 分别设置为1-1,然后返回-1;否则,将 overflow 设置为0。如果发生任何其他异常(例如 TypeError 或 MemoryError),则将返回-1,并且 overflow *将是0

2.7 版的新Function。

  • Py_ssize_t PyLong_AsSsize_t(PyObject ** pylong *)
    • 返回* pylong 内容的 C Py_ssize_t表示形式。如果 pylong *大于PY_SSIZE_T_MAX,则引发OverflowError并将返回-1

2.6 版的新Function。

  • 无符号长PyLong_AsUnsignedLong(PyObject ** pylong *)
    • 返回* pylong 内容的 C unsigned long表示形式。如果 pylong *大于ULONG_MAX,则引发OverflowError
  • PY_LONG_LONG PyLong_AsLongLong(PyObject ** pylong *)
    • 从 Python 长整数返回 C long long。如果* pylong *无法表示为long long,则引发OverflowError并返回-1

2.2 版中的新Function。

  • 未签名的 PY_LONG_LONG PyLong_AsUnsignedLongLong(PyObject ** pylong *)
    • 从 Python 长整数返回 C unsigned long long。如果* pylong *无法表示为unsigned long long,则引发OverflowError并返回(unsigned long long)-1

2.2 版中的新Function。

在 2.7 版中进行了更改:现在,负* pylong *会引发OverflowError而不是TypeError

  • 无符号长PyLong_AsUnsignedLongMask(PyObject ** io *)
    • 从 Python 长整数返回 C unsigned long,而不检查是否有溢出。

错误返回(unsigned long)-1。使用PyErr_Occurred()消除歧义。

2.3 版的新Function。

  • 未签名的 PY_LONG_LONG PyLong_AsUnsignedLongLongMask(PyObject ** io *)
    • 从 Python 长整数返回 C unsigned long long,而不检查是否有溢出。

错误返回(unsigned PY_LONG_LONG)-1。使用PyErr_Occurred()消除歧义。

2.3 版的新Function。

  • PyLong_AsDouble(PyObject ** pylong *)

    • 返回* pylong 内容的 C double表示形式。如果 pylong *无法近似表示为double,则会引发OverflowError异常,并将返回-1.0
  • 无效* PyLong_AsVoidPtr(PyObject ** pylong *)

    • 将 Python 整数或长整数* pylong 转换为 C void指针。如果 pylong *无法转换,则会引发OverflowError。仅保证为使用PyLong_FromVoidPtr()创建的值生成可用的void指针。

版本 1.5.2 中的新Function。

在版本 2.5 中更改:对于 0..LONG_MAX 以外的值,有符号和无符号整数均可接受。