c语言 任意进制数的转换

cpp 复制代码
/* 函数trans将无符号整数n翻译成d(2<=d<=16)进制表示的字符串s */
#define M sizeof(unsigned int)*8
int trans(unsigned n, int d, char s[])
{
	static char digits[] ="0123456789ABCDEF"; /* 十六进制数字的字符 */
	char buf[M+1];
	int j, i = M;
	if(d<2||d>16)
	{
		s[0]='\0';	/* 不合理的进制,置s为空字符串 */
		return 0;	/* 不合理的进制,函数返回0 */
	}
	buf[i]='\0';
	do
	{
		buf[--i]=digits[n%d];	/*译出最低位,对应字符存入对应工作数组中*/
		n/=d;
	}while(n);
	/* 将译出在工作数组中的字符串复制到s */
	for(j=0;(s[j]=buf[i])!='\0';j++,i++);
		/* 其中控制条件可简写成s[j]=buf[i] */
	return j;
}
/* 主函数用于测试函数 trans() */
main()
{
	unsigned int num = 253;
	int scale[]={2,3,10,16,1};
	char str[33];
	int i;
	clrscr();
	for(i=0;i<sizeof(scale)/sizeof(scale[0]);i++)
	{
		if(trans(num,scale[i],str))
			printf("%5d = %s(%d)\n",num,str,scale[i]);
		else
			printf("%5d => (%d) Error! \n",num,scale[i]);
	}
	printf("\n Press any key to quit...\n");
	getch();
}
相关推荐
李迟2 分钟前
Golang实践录:工程框架实践:搭建工程模板
开发语言·后端·golang
纪伊路上盛名在3 分钟前
Kabsch算法的Julia实现
开发语言·算法·julia·序列分析·蛋白质·rmsd
玖玥拾7 分钟前
Lua 基础语法(三) 元表 metatable、元方法、模拟面向对象
开发语言·unity·lua
维天说12 分钟前
Agent会听人话,反而更难管
java·开发语言·人工智能
水饺编程17 分钟前
编程数学:三角函数基础01,直角三角函数
c语言·c++·windows·visual studio
LuminousCPP20 分钟前
数据结构-排序(一):基础排序算法横向对比|冒泡、插入、希尔、堆与双向选择,详解二分 / Knuth 增量
c语言·数据结构·笔记·算法·排序算法
初願致夕霞21 分钟前
C/C++传统程序内存分布(代码实测)
java·c语言·c++
会飞的拖把27 分钟前
Python 面向对象编程详解:从类与对象到动态属性方法
开发语言·python
大牧师1 小时前
Nest.js 微服务入门教程
开发语言·javascript·后端·微服务·node.js·nest.js·nest
格林威1 小时前
C# 图像异步落盘存储:基于Channel 配合 ArrayPool 实现异步落盘
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测