用字母表示数字(相当于10进制转换成26进制),中26即Z的转换控制,该如何处理

用字母表示数字(相当于10进制转换成26进制),中26即Z的转换控制
CString numbertoletter(int index,CString serialvalue)
{
int prefix=index/26;
int postfix=index%26;
CString bbb;
if (prefix<26)
{
CString aaa;
aaa.Format("%c",prefix+64);
serialvalue+=aaa;
}
else if(prefix>=26)
{

serialvalue+=numbertoletter(prefix,serialvalue);

}
else if(prefix==0)
{
}

if(postfix!=0)
{
bbb.Format("%c",postfix+64);
serialvalue+=bbb;
}
else if(postfix==0)
{
bbb.Format("%c",90);
serialvalue+=bbb;
}
return serialvalue;
}
中26即Z的转换控制搞得我有点头晕,有谁能指点我一下吗
或者有没有不用递归的方法?

------解决方案--------------------
for(;index>25;index/=26)
{
postfix=index%26;
bbb.Format("%c",65+(postfix+25)%26);
serialvalue+=bbb;
}
------解决方案--------------------
void transf(int a,int radix,int &n,char *ans)//a: 要转化的整数,radix:转换的进制,n:转换后得到的位数,ans为结果
{
n=0;
while(a)
{
ans[n++]=("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[a % radix]);
a = a / radix;
}
for(int i=0;i<n/2;i++)
{
swap(ans[i],ans[n-i-1]);
}
ans[n]='\0';
}
------解决方案--------------------
探讨
找到办法了
do
{



postfix=index%26;

index/=26;

if(postfix==0)
{
postfix=26;
index--;
}


bbb.Format("%c",65+(postfix+25)%26);
serialvalu=bbb+serialvalu;

}
while(index>0);

------解决方案--------------------
楼主没看到我的函数吗???


void transf(int a,int radix,int &n,char *ans)//a: 要转化的整数,radix:转换的进制,n:转换后得到的位数,ans为结果
{
n=0;
while(a)
{
ans[n++]=("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[a % radix]);
a = a / radix;
}
for(int i=0;i<n/2;i++)
{
swap(ans[i],ans[n-i-1]);
}
ans[n]='\0';
}
------解决方案--------------------
探讨

void transf(int a,int radix,int &amp;n,char *ans)//a: 要转化的整数,radix:转换的进制,n:转换后得到的位数,ans为结果
{
n=0;
while(a)
{
ans[n++]=("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[a % radix]);
a = a / radi……