将10进制数转换为任意(2-62)进制的字符串

jingrunx 2004-07-13 10:31:52
void FormatNumber(int val, int digit, char* ret)
{
static const char* digit = "0123456789\
abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ";

// ... add your code in here
}
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zark 2004-07-13
  • 打赏
  • 举报
回复

信手写来,未经测试,作者保留版权,使用者后果自负.

void FormatNumber(unsigned int val, int digit, char* ret)
{
static const char* ch = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

// ... add your code in here
if (!val)
{
sprintf(ret,"0");
return;
}

while(val)
{
*ret++=ch[val%digit];
val/=digit;

}
*ret='\0';

int nLen=strlen(ret);
char* ptr=new char[nLen+1];
char* head=ptr;
strcpy(ptr,ret);
ret+=nLen;

while(*ptr)
*ret--=*ptr++

delete head;
return;
}
Leaveye 2004-07-13
  • 打赏
  • 举报
回复
void FormatNumber(int value, int radix, char* ret)
{
static const char* digit = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

// ... add your code in here
char str[40], *p;
int i=0;
while(i<40) str[i++]=0;
i=0;
while(val>0)
{
str[i++] = digit[ val % radix ];
val /= radix;
}
ret = (char*)malloc( (i + 1) * sizeof(char) );
p = ret;
while(i>0)
*p++ = str[--i];
*p = '\0';
}
hcj2002 2004-07-13
  • 打赏
  • 举报
回复
itoa()

不过转换范围为2--36

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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