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