說我有16個64位無符號整數。在執行操作時,我一直非常小心地在它們之間提供攜帶物。我可以將它們送入一種方法,將它們全部轉換爲一串十進制數字,就像它是一個1024位二進制數字一樣?換句話說,是否可以創建一個方法來處理代表一個大整數的任意數量的整數?打印多個整數作爲一個任意長的十進制字符串
我認爲對於有符號整數會更困難,因爲最重要的一點是需要處理。我想這應該是最重要的整數是有符號的整數,其餘的將是無符號的,以表示數字的剩餘部分。
(這是半有關another question)
說我有16個64位無符號整數。在執行操作時,我一直非常小心地在它們之間提供攜帶物。我可以將它們送入一種方法,將它們全部轉換爲一串十進制數字,就像它是一個1024位二進制數字一樣?換句話說,是否可以創建一個方法來處理代表一個大整數的任意數量的整數?打印多個整數作爲一個任意長的十進制字符串
我認爲對於有符號整數會更困難,因爲最重要的一點是需要處理。我想這應該是最重要的整數是有符號的整數,其餘的將是無符號的,以表示數字的剩餘部分。
(這是半有關another question)
這有點不清楚。
當然,如
void print_1024bit(uint64_t digits[]);
可以寫成這樣做的功能。但是如果你的意思是任何標準庫的printf()
-功能族可以做到這一點,那麼我認爲答案是否定的。
你可能在其他問題所看到的,轉換成二進制數成不同的基礎b的核心是由兩個操作:
當應用直到數字爲0時,這將以相反的順序生成所有數字。
所以,你需要爲你的1024位數字實現「模10」和「除10」。
例如,考慮小數4711,這是我們要轉換爲八進制數只是這個例子:
所以,從底部讀出的大膽位和多達向最右邊的數字,我們得出結論,4711 = 11147 。你可以使用計算器來驗證這一點,或者只是相信我。 :)
當然,這是可能的,但不是非常直接。
沒有重新發明輪子,如何重用圖書館?
GNU Multi Precision Arithmetic Library就是這樣一種可能性。我自己並不需要這些東西,但它似乎適合您的賬單。
您可以使用double dabble algorithm,它規避了多精度乘法和除法的需要。實際上,Wikipedia頁面包含此算法的C實現。
聽這傢伙,並使用圖書館。 – 2012-12-14 12:27:45