<p>实际上,这些函数不是要有“指向任意大整数的指针”,而是字面上的整数值作为<code>void *</code>指针,例如,强制转换为<code>void *</code>类型。参见<a href="https://github.com/python/cpython/blob/3.7/Objects/longobject.c#L1017-L1032" rel="nofollow noreferrer">^{<cd3>}</a>和<a href="https://github.com/python/cpython/blob/3.7/Objects/longobject.c#L1034-L1063" rel="nofollow noreferrer">^{<cd4>}</a>的实现。它只允许您在Python中保存任意指针,以确保正确完成转换。你知道吗</p>
<p>据我所知,从Python中获取任意长整数最实用的方法是使用<a href="https://docs.python.org/3/library/stdtypes.html#int.to_bytes" rel="nofollow noreferrer">^{<cd5>}</a>和<a href="https://docs.python.org/3/library/stdtypes.html#int.from_bytes" rel="nofollow noreferrer">^{<cd6>}</a>。实际上有一个内部ishapi <a href="https://github.com/python/cpython/blob/3.7/Include/longobject.h#L127-L142" rel="nofollow noreferrer">^{<cd7>}</a>/<a href="https://github.com/python/cpython/blob/3.7/Include/longobject.h#L144-L165" rel="nofollow noreferrer">^{<cd8>}</a>,您可以使用它。参见相关问题<a href="https://stackoverflow.com/q/18290507/1782792">Python extension - construct and inspect large integers efficiently</a>。你知道吗</p>
<p>注意:有趣的是,似乎没有任何官方或其他的C API来告诉Python整数值的位或字节长度。在Python中有<a href="https://docs.python.org/3/library/stdtypes.html#int.bit_length" rel="nofollow noreferrer">^{<cd9>}</a>,但它似乎没有映射到任何公开可用的函数。你知道吗</p>