N進製轉M問題(理論上沒有限制)

2021-07-30 04:23:31 字數 1039 閱讀 7266

很經典的問題,自己動手寫了一遍**。

不同的是,我沒有採取字母代替高進製數的做法(如16進製製用字母abcdefg表示數字),而是採取 用多位數表示數字,如16進製制裡20表示為:01 04,16則表示為01 00,17表示為0101。以此類推,而對於101-1000進製的數,則用三位數表示,如001 057。

這樣做就可以表示進製很大的數了。理論上,這種做法只受限於整形最大值,當然如果換成陣列或者字串表示,還可以突破這個限制。

public

class main

static

int jinzhizhuanhuan(int

value,int n,int m)

//十進位制數轉換成m進製數

int m_value=0;

int m_sign=calculate_radix(m-1);

int m_index=power(10, m_sign);//獲取進製的數

for(int i=0;;i++)

return m_value;

}//求乙個的的n次方,math裡只有double型別的,所以我就自己寫了乙個

static

int power(int a,int n)

return a;

}//求乙個整數的基數,例如 5251是4位數,基數就為4。

static

int calculate_radix(int n)

return radix;

}}

結果示例:

輸入:jinzhizhuanhuan(11114, 16,12)//11114是個16進製制數

輸出:30102 //12進製數

輸入輸出都會遵循上面解釋的位數表示方法,只是,對於最左邊的一位數,理論上需要補0的,實際上卻不能補,因為int a=011會轉換為8進製數,所以最前面是不能補0的,一樣,輸出的話,整數不會再前面輸出0,當然這些其實都可以解決,比如用字串,用陣列。。

這個演算法可以算高進製的數,算是乙個特點吧,其實也不能。也許還有改進的地方,我沒有仔細想了。

練習系列 8 m進製轉n進製(任意進製轉換)

author liubao date 2011 4 10 brief m進製轉n進製,主流實現方式 include m進製 數字 字串轉為n進製字串。先由m進製轉為10進製,再由10進製轉為n進製 param dest 轉換完畢的n進製字串 param n 目的進製數 十六進製制填16 二進位制填2...

M進製轉換為N進製數

給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入為一行,m 32位整數 n 2 n 16 以空格隔開。為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 比如 輸入 7 2 輸出 111 進製轉換的思路...

從M進製轉換為N進製

從m進製轉換為n進製 internal class mbase2nbase ctor m進製值字串 m進製 如10 引數值在2 36的範圍內 n進製 如8 則意味著從10進製轉換成8進製.引數值在2 36的範圍內 public mbase2nbase string mvalue,int m,int ...