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();
}
相关推荐
十五年专注C++开发几秒前
CMake进阶:find_package使用总结
开发语言·c++·cmake·跨平台编译
lxw18449125141 分钟前
PHP凉了?岗位缩水50%+,开发者该何去何从?
开发语言·php
weixin_456808381 分钟前
【沁恒蓝牙开发】2.4G PHY TX 数据流程
c语言
Clarence Liu9 分钟前
用 Go 从 100 亿个数中找到最小的 100 个数 —— 实战与原理
开发语言·后端·golang
Sɪʟᴇɴᴛ໊ོ23511 分钟前
C语言getchar()函数详解
c语言
xiaowu08015 分钟前
IEnumerable、IEnumerator接口与yield return关键字的相关知识
java·开发语言·算法
csbysj202020 分钟前
Perl 目录操作指南
开发语言
-To be number.wan21 分钟前
C++ 运算符重载入门:让“+”也能为自定义类型服务!
开发语言·c++
未来之窗软件服务21 分钟前
幽冥大陆(七十九)Python 水果识别训练视频识别 —东方仙盟练气期
开发语言·人工智能·python·水果识别·仙盟创梦ide·东方仙盟
王家视频教程图书馆26 分钟前
android java 开发网路请求库那个好用请列一个排行榜
android·java·开发语言