练习系列 - 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]
相关文章推荐
- 算法题练习系列之(十五): D进制的A+B
- 【练习】面向对象系列(004)——在自定义窗口中画矩形、直线、椭圆
- Linq无聊练习系列2--select/distinct练习
- RHEL6入门系列之十三,阶段练习1
- RHEL6入门系列之三十二,阶段练习4及期末考试试题
- 代码练习系列:问题 B Day of Week
- OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(下)
- 《笨办法学 python3》系列练习计划——33.while循环
- UVA oj 练习水题 算法入门经典(大数系列)
- 《笨办法学 python3》系列练习计划——35.分支和函数
- codevs 1080~1082 线段树练习系列(模板)
- 算法题练习系列之(五):数字分类
- 递归递推练习―D―汉诺塔系列1
- 第十周练习 1005 不容易系列之(3)—— LELE的RPG难题
- 算法题练习系列之(二十七): 有理数四则运算
- 蓝桥杯 之 基础练习11:十六进制转十进制
- 贪心练习 again (codeforces 系列)
- 《笨办法学 python3》系列练习计划——12.提示别人 input() 打印提示
- 简单线程系列6-练习单线程查询数据库
- 代码练习系列:问题 E 学生查询