心血来潮,看书做个简单练习。 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数组。
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SammyLan 2005-06-13
  • 打赏
  • 举报
回复
呵呵
帮忙顶一下
兔子-顾问 2005-06-13
  • 打赏
  • 举报
回复
对了。有一句,从函数里拿到外面执行
memset(szData,0,MAXNUM*sizeof(char));
vcmute 2005-06-13
  • 打赏
  • 举报
回复
char szTmp[MAXNUM]={0};
可省了下面一句
memset(szTmp,0,MAXNUM*sizeof(char));

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧