2012-10-03 34 views
15

我想寫一個C程序,做基地轉換。基地10到基地n轉換

我想一個十進制數轉換成所有的2其他整數基地20

是否有一個高效和易於實施的基礎轉換算法?

+0

只有一種方法可以將數字從一個基數轉換爲另一個基數。究竟是什麼問題? –

+0

當你說「所有其他基數從2到20」時,我會假設你是指所有從2到20的實數整數基數?沒有不真實的基礎,也沒有非整數基礎?那些更難。 –

+0

另外,有什麼問題?向我們展示你到目前爲止的代碼。 –

回答

23

我不明白問題到底在哪裏?做基礎轉化非常簡單,直接:您可以像手動操作那樣做。

  • 鴻溝通過
  • 寫下其餘
  • 重複與除法的整數部分時達到零個
  • 反向餘數
  • 停止過程訂單給你的位數基地

實施例:

1025(十進制)到基座15:

1025/15 = 68 , remainder 5 
68 /15 = 4 , remainder 8 
4 /15 = 0 , remainder 4 

在基座15的數量是485

2

您可能有兩個問題:

  • 從解析原始基地到電腦的原生整數表示(strtol相當不錯)。

  • 格式化爲新的基礎。 (itoa相當不錯)。

如果你想自己寫,你可能會喜歡div function。你輸入數字和基數,然後將最右邊的數字分開。重複獲取所有數字。

如果你想要更高效,你可以除以基數平方,並一次獲得兩位數(使用查找表來獲取兩位數字的ASCII字符)。 Here's an example of some very efficient implementations.將其更改爲使用不同的底座並不困難。