首先,將m進製轉為10進製,然後在將10進製轉為n進製;(都用輾轉相除法)
#include
using namespace std;
void mton(char* src, int m, char* dest, int n);
void reversestring(char *s);
int main() ;
mton("35", 10, a, 10);
puts(a);}/*
src為m進製字串
m為原進製
dest為目的字串
n為目的進製
*/void mton(char* src, int m, char* dest, int n)
intcount = 0;
char* tmp = dest; //不能改變首位址
//先轉化為10進製,逆著輾轉相除
while (*src != '\0')
int length = 0;
//輾轉相除,轉為n進製,逆著儲存
while (count != 0)
// puts(dest);
//逆過來
reversestring(dest);}/*
字串逆序
*/void reversestring(char *s)
q--; //指向最後一位
while (q > p)
}
說明:m和n都是10以內的數,如果大於10需要涉及到字母,可以在準換中進行判斷,例如
if(*src == 'a')
將10進製轉化為n時,可以參考另一篇: 模板 進製轉換(m 10 n)
進製轉換其實一類特殊的數字拆解問題。要完成m進製到n進製的轉換,只需要完成 1 m進製轉換成10進製,2 10進製轉換成n進製。對於 1 只需要依次計算每個數字與該位權重的積,然後累加即可。對於 2 只需要不斷地對這個數對n求模,再除以n即可,這一點是和10進製的數字拆解相似的。1.當以字串形式讀入...
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 ...