c / c++ 任意进制转换函数

本文介绍了一种不依赖任何头文件的C/C++进制转换函数,能够将任意进制数转换为任意进制数。提供了两种实现方式,一种为多函数实现,另一种为简单函数实现。但需要注意的是,当进制超过11时可能存在BUG。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c/c++进制转换函数实现任意进制数转任意进制数

注意:此函数不依赖任何头文件
2019/08/07增补


多函数实现:(11进制及以上有BUG)
调用aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字

int rev(int a,int od) {
   //颠倒数加强版函数
	int n=a,m=0;
	while(n!=0) {
   
		m=m*10+n%10+od;
		n/=10;
	}
	return m;
}
int aikzp(int a,int k,int p) {
   //进制转换 调用:[addb(待转换数字,待转换进制,生成进制)]
	int n=a,m=0,t=1,bt=0;
	if(k==p) return a;
	if(k!=10) {
   
		while(n!=0) {
   
			m+=n%10*t;
			n/=10;
			t*=k;
		}
		n=m;
		m=0;
	}
	t=0;
	if(p!=10) {
   
		while(n!=0) {
   
			m=m*10+n%p;
			n/=p;
			t++;
		}
		m=rev(m,0);
		t--;
		bt=m;
		while(t>0){
   
			if(bt<10) m*=10;
			else bt/=10;
			t--;
		}
	} else m=n;
	return m;
}

简单函数实现:(11进制及以上有BUG)
调用jd_aikzp(待转换数字,待转换进制,生成进制)返回生成指定进制数字

int jd_aikzp(int a,int k,int p) {
   
	int n=a,m=0,t=1,bt=0,dm=0;
	if(k==p) return a;
	if(k!=10) {
   
		while(n!=0) {
   
			m+=n%10*t;
			n/=10;
			t*=k;
		}
		n=m; 
	}
	t=m=0;
	if(p!=10) {
   
		while(n!=0) {
   
			m=m*10+n%p;
			n/=p,t++;
		}
		while(m!=0) {
   
			dm=dm*10+m%10;
			m/=10;
		}
		bt=dm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值