/*十进制转二进制输出 */
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;
}