进制转换算法

写一个函数char * fun(int value, int radix).输入为一个整数和一个代表进制的整数,如71,7。 71表示要转化的数,7代表要转化成7进制数。输出一个字符串指针,字符串为整数value转化为radix进制后的数字序列。小于10进制数用0~9表示,10进制~35进制用a~z表示。例如71用35进制表示为21,71用36进制表示为1z。

char* fun(int value, int radix)
{
    int i,j;
    char map[36];
    static char ss[100] = {0};
    char c;
    
    if(radix > 36 || radix <= 1)
    {
        return NULL;
    }
    for(i = 0; i < 36; i++)
    {
        if(i < 10)
        {
            map[i] = '0' + i;
        }
        else
        {
            map[i] = 'a' + i - 10;
        }
    }

    i = 0;
    
    while(value > 0)
    {
        ss[i++] = map[value % radix];
        value /= radix;
    }

    for(j = 0; j < i / 2; j++)
    {
        c = ss[j];
        ss[j] = ss[i - j -1];
        ss[i - j - 1] = c;
    }

    return ss;

}


以上程序在VC6上编译通过,关于用户传递的不合法的进制数例如1或大于36的数,返回NULL不是好的处理方法,应该还有更好的方法。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值