如何在Python中处理极大值?
我想知道怎么让Python处理大约1099511627776位(也就是137GB)这么大的值。我需要实现这个功能(如果你有更好的方法,也可以告诉我,我会考虑换方法)。据说PGP的新长度类型有三个部分,而不是两个。现在它们是:长度类型、长度类型的值和长度。长度类型占2位,这可以表示191字节、8383字节、4294967296字节,或者是部分长度。长度则是以字节的形式编码的。如果我连1 << (4294967296 << 8)
都无法执行,因为这个数太大了,连长整型都装不下,我该怎么检查一个值是否小于4294967296字节呢?
4 个回答
1
使用一个大数库,比如GMPY。
1
使用三参数形式的 pow()
函数。
2
这个问题不是说数据太大放不下,而是它太大,连任何电脑的内存都装不下。我觉得你可能误解了什么。
根据我的理解,最大的键值是4,294,967,295字节,也就是4GB,而不是137GB。你在内存中保存这个键值时,并不是以一个数字的形式,而是以一串字节的形式。所以我不明白你是从哪里得出137GB这个数字的。
如果PGP需要这么大的数据,那就根本无法实现。既然已经有了相关的实现,我相信事情并不是这样。
(另外,我相信Python中有PGP的模块,但如果你这样做不是因为需要,而是为了练习和学习,那就继续加油吧!)