十进制转换为各进制

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值