十進位制轉換為各進位制
阿新 • • 發佈:2018-12-06
/*十進位制轉二進位制輸出 */ void fun1(int n) { if(n/2)// 非0為真 fun1(n/2); putchar('0'+n%2); } /*十進位制轉八進位制輸出 */ void fun2(int n) { if(n/8) fun2(n/8); putchar('0'+n%8); } /*十進位制轉十六進位制輸出 */ void fun3(int n) { if(n/16) fun3(n/16); int i = n%16; if(i<10) putchar('0'+i); else putchar('a'+i-10); } /*二進位制轉十進位制 */ int fun4(char *str) { int num = 0; while(*str != '\0') { int i = *str-'0'; if(i>=0 && i<=1)// 跳過其它字元 num = num*2+i; str++; } return num; } /*八進位制轉十進位制 */ int fun5(char *str) { int num = 0; while(*str != '\0') { int i = *str-'0'; if(i>=0 && i<8)// 跳過其它字元 num = num*8+i; str++; } return num; } /*十六進位制轉十進位制 */ int fun6(char *str) { int num = 0; while(*str != '\0') { char ch = *str; if(ch>='0' && ch<='9') num = num*16+ch-'0'; if(ch>='a' && ch<='f') num = num*16+10+ch-'a'; str++; } return num; } string s = "0123456789"; string convert(int n, int r) //n(10進位制)----> string(r進位制) { string c; int d; //餘數 while(n) { d = n%r; c += s[d]; n /= r; } return c; }