你如何在python中处理极大的值?

时间:2011-01-03 06:50:24

标签: python math int long-integer openpgp

我如何让python使用数量级为1099511627776位的值(是的.137 gb)?我需要实现这一点(或者如果你可以建议一个更好的方法来实现它,将改变方法)。显然,pgp的新长度类型有3个部分而不是2个。现在它们是:长度类型,长度值类型和长度。长度类型是2位,转换为191字节,8383字节,4294967296字节或部分长度。然后以字节为单位编码长度。如果我甚至不能1 << (4294967296 << 8),我将如何检查一个值是否小于4294967296字节?它太大了,甚至不适合。

4 个答案:

答案 0 :(得分:2)

它不仅适合长大,而且太大而无法放入任何计算机的存储器中。我觉得你误会了什么。

据我了解,最大的键值是4,294,967,295字节。那是4GB,而不是137GB。您将该密钥保存在内存中而不是一个数字,而是一个字节串。所以我不知道你从哪里得到一个137 GB的数字。

如果PGP要求,则无法实施。既然有实现,我肯定不是这样做的。

(另外,我确信有适用于Python的PGP模块,但是如果你这样做不是因为你需要它,而是因为你需要学习,那就继续学习吧!)

答案 1 :(得分:1)

使用pow()的三参数形式。

答案 2 :(得分:1)

使用像GMPY这样的大号库。

答案 3 :(得分:0)

我对RFC4880(2007年11月)的解释不同。 3.2节将多个精度整数描述为长度为2个八位字节,因此最大尺寸为64KB。第4.2.2节描述了新描述的数据包格式和文档编号。但数据包格式与多精度整数格式不同。如果您的解释方式不同,请使用您正在阅读的RFC的确切部分更新您的问题。