心血来潮,看书做个简单练习。 10进制转n进制的小函数
兔子-顾问 2005-06-13 12:04:59 #defing MAXNUM 100 //假设只计算100位长度的数据,这个随便改,长短对运算时间影响不大。
void TenToX(int nBase,long nM,char* szData)
{
char szTmp[MAXNUM];
memset(szTmp,0,MAXNUM*sizeof(char));
memset(szData,0,MAXNUM*sizeof(char));
long nTmp=nM;
int i=0;
for (;nTmp>0;i++)
{
szTmp[i]=nTmp%nBase+48;//0的ascii是48一次类推
/*56的ascii是9,超过1个数字用A表示,这样不修改函数最高支持到190进制,对于小于10的进制用不到这些扩展字符*/
if(szTmp[i]>57)
szTmp[i]+=7;
nTmp=(long)(nTmp/nBase);
}
int k=0;
for (int j=i-1;j>=0;j--,k++)
szData[k] = szTmp[j];
}
调用的时候这样:
long lData = 1250;
char szData[MAXNUM];
TenToX(16,lData,szData);
cout<<szData;
16表示转换为16进制的数
lData是表示转换的10进制数
szData是接受返回字串的char数组。