2010-04-14 36 views

回答

3

內置pickle模塊可以做到這一點,如果你在協議版本通過2(「新的二進制協議」):

import pickle 
pickle.dumps(2**10000, 2) 

返回的1259個字節的字符串。當然,你想寫它到一個正常的文件,所以使用pickle.dump(2**10000, file, 2)

2

我不清楚如果你一般問如何在二進制文件中存儲大整數或如果數字2 ** 10000意義重大。如果它是有意義的,那麼使用超過千字節來存儲它顯然是非常浪費的(我可以寫成8個字符!)

我假設一般情況下,但對於初學者,你需要10001位來存儲2 ** 10000,而不是10000,所以有一個問題是如何處理填充文件中字節邊界所需的額外7位。我只是將它存儲在10008位(1251字節)中。該解決方案使用bitstring模塊。

from bitstring import BitArray 
fout = open('bignumber', 'wb') 
a = BitArray(uint=2**10000, length=10008) 
a.tofile(fout) 

,並讀回:

the_number = BitArray(filename='bignumber').uint 

這確實只是存儲的數量和文件中沒有別的。

+0

在我的情況下,我每次都存儲完全相同的位數,所以下次我查看代碼時,我會檢查這是否更快,謝謝。 – Mark 2010-04-25 20:15:06

相關問題