您的位置:首页 > 其它

练习系列 - 8、m进制转n进制(任意进制转换)

2011-04-10 21:00 369 查看
[code]/*!


\author LiuBao


\date 2011/4/10


\brief m进制转n进制,主流实现方式


*/


#include <stdio.h>


 


/*!


m进制(数字)字符串转为n进制字符串。(先由m进制转为10进制,再由10进制转为n进制)


\param dest 转换完毕的n进制字符串


\param n 目的进制数(十六进制填16、二进制填2等)


\param src 初始m进制字符串


\param m 初始进制数,与目的进制数表示方法相同


\warning 初始m进制字符以10进制表示若超过int表示范围,结果未定义;且转换为n进制需要的字符个数未知。


*/


void m2n(char *dest, unsigned int n, const char *src, unsigned int m)


{


char ch, *p = dest - 1;


unsigned int i = 0;


 


/* m进制字符串src转为10进制数i */


while(*src) i = i * m + *src++ - '0';


 


/* 辗转相除得出逆序的n进制表示在dest */


while(i) *dest++ = i % n + '0', i /= n;


 


/* 在dest写入结尾符 */


*dest = '\0';


 


/* 逆序字符串 */


while(++p < --dest)


{


ch = *dest;


*dest = *p;


*p = ch;


}


}


 


int main()


{


char result[100];


 


m2n(result, 10, "56", 16);


printf(result);


 


return 0;


}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: