常规方法:
/* reserse str[start~end],close area*/
void str_reverse(char* str , int start , int end)
{
char c = 0;
while(start<end)
{
c = str[start];
str[start] = str[end];
str[end] = c;
start++;
end--;
}
}
char* convertToBase7(int num)
{
char* ret_val = (char*)malloc(20); /* 20个字节足够了吧*/
int ind = 0;
int temp = num;
do
{
if(ret_val)
{
memset(ret_val,0,20); /**/
}
else
{
break;
}
if(num<0)
{
ret_val[ind] = '-' ;
temp = -temp ;
ind++ ;
}
do
{
ret_val[ind] = temp % 7 + 0x30;
ind++;
temp /= 7;
}while(temp!=0);
if(num < 0)
{
str_reverse(ret_val,1,ind-1);
}
else
{
str_reverse(ret_val,0,ind-1);
}
break;
}while(0);
return ret_val;
}
/*
执行用时 :0 ms, 在所有 C 提交中击败了100.00%的用户
内存消耗 :6.8 MB, 在所有 C 提交中击败了59.38%的用户
*/
|