簡體   English   中英

如何在python中將任意長整數存儲到二進制文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM