m进制转n进制(任意进制转换)

m进制转n进制(任意进制转换)

/*!/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; }

来自:http://archive.cnblogs.com/a/2011817/

点赞