[英]How to store an arbitrarily long int to a binary file in python?
如何在不使用python的二進制文件中存儲和檢索數字2 ** 10000的情況下將其轉換為字符串? 可以存儲為10,000位嗎?
如果您傳入協議版本2(“新二進制協議”),則內置的pickle模塊可以做到這一點:
import pickle
pickle.dumps(2**10000, 2)
返回一個1259字節的字符串。 當然,您希望將其正常寫入文件,因此請使用pickle.dump(2**10000, file, 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
這確實只是存儲數字,而沒有存儲任何其他信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.