Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 把蟒蛇长成四肢_Python_Cryptography_Gmp_Gmpy - Fatal编程技术网

Python 把蟒蛇长成四肢

Python 把蟒蛇长成四肢,python,cryptography,gmp,gmpy,Python,Cryptography,Gmp,Gmpy,我正在尝试用Python编写一个的实现,我需要一个与Python long等效的GMP,但我一生都找不到 任何帮助都将不胜感激 编辑 我已经实现了以下内容,但我得到了GMP中未出现的肢体索引超出范围的错误 def unpack(x, b): if gmpy2: return [long(x) for x in gmpy2.unpack(gmpy2.mpz(x), b)] b = 2 ** b r = [] while x: x,

我正在尝试用Python编写一个的实现,我需要一个与Python long等效的GMP,但我一生都找不到

任何帮助都将不胜感激

编辑

我已经实现了以下内容,但我得到了GMP中未出现的肢体索引超出范围的错误

def unpack(x, b):
    if gmpy2:
        return [long(x) for x in gmpy2.unpack(gmpy2.mpz(x), b)]

    b = 2 ** b
    r = []
    while x:
        x, temp = divmod(x, b)
        r.append(temp)
    return r

我修改了你的
unpack()
,它似乎适合我。如果仍然出现错误,请发布完整错误

>>> import gmpy2
>>> 
>>> def unpack(x, b):
...     try:
...         return [x for x in gmpy2.unpack(gmpy2.mpz(x), b)]
...     except NameError:
...         b = 2 ** b
...         r = []
...         while x:
...             x, temp = divmod(x, b)
...             r.append(temp)
...         return r
... 
>>> unpack(123456**7, 15)
[mpz(0), mpz(0), mpz(4096), mpz(25855), mpz(24508), mpz(31925), mpz(15111), mpz(10775)]
>>> del(gmpy2)
>>> unpack(123456**7, 15)
[0, 0, 4096, 25855, 24508, 31925, 15111, 10775]
使用
gmpy2
时,我将结果保留为
mpz
,以显示使用了
gmpy2

Python的长整数类型使用存储15位或30位的分支
sys.int_info
将为您的系统提供详细信息


顺便说一句,我维护了
gmpy2
,很高兴看到有人使用
unpack()

这不是公共API的一部分。请参阅,以获取您将必须访问的实现详细信息。@user2357112谢谢您的回复。有没有办法不用Cython来深入研究这个问题,或者这是唯一的途径?我对Cython了解不够,不知道它是否适合在这里使用。我想直接写C。谢谢你的回复,也谢谢你提供的很棒的库。在
mpz_getlimbn()
的文档中,它指出从我所能收集的数据中“最低有效分支是数字0”,必须反转解包的输出以匹配此功能,对吗?实际上取消,我的单元测试现在似乎通过了,而没有反转解包的输出。