把整型转换为字符串的转换函数,请高手赐教

求一个把整型转换为字符串的转换函数,请高手赐教!
如题,我想要一个把整型(int)转换成字符串(string)的实现函数,具体的函数原型希望如下:
char*   itoa(   int   value,   char   *str,   int   radix   );
    参数说明:value   ——   是待转换的整型
                        *str     ——   是转换之后要返回的字符串
                        radix   ——   是转换的基数,即可以用这个规定转换的基数

        其实,也有不少网友有相关的代码,但是有的和标准的参数设置不同,有的是代码太过繁琐,函数种使用了很多原本不需要的参数,使代码显得很难懂。
        我现在想要一个简洁、易懂的实现函数,希望高手多多指教!

最后,说句谢谢!

------解决方案--------------------
忘记考虑符号了

char* itoa( int value, char *str, int radix )
{
int i=0, v;
char buffer[128];
char *p, *q;

int sign = value < 0 ? 1 : 0;
q = str;

if (radix > 16) return 0;
do {
v = value % radix ;
if (v> =10)
buffer[i] = 'A ' + v-10;
else
buffer[i] = '0 ' + v;
value /= radix;
i++;
} while (value)
buffer[i] = '\0 ';

p = buffer + strlen(buffer) - 1;
if (sign) *q++ = '- ';
while(p> =buffer) *q++ = *p--;

return str;
}
------解决方案--------------------
长的是长了点,主要是其他进制的负数处理。。。

char *itoa(int value, char *string, int radix)
{
int i = 0, j = 0, flag = 1, tmp, tmp1, tmp2;
char *temp = string;

if (value < 0)
{
flag = 1;
if (radix == 10)
{
*string = '- ';
j++;
value = abs(value);
}
else
{
value = (~(abs(value))+1) & 0x7FFFFFFF; //设置符号位为 0
}

}

while (value != 0)
{
tmp = value % radix;
value /= radix;
if (tmp > = 10)
{
tmp = (tmp - 10) + 'A ';
}
else
{
tmp = tmp + '0 ';
}
*((string++) + j) = (char)tmp;
}

string = temp;

tmp2 = (int)strlen(string) - 1;
tmp = tmp2 / 2;

for (i=0; i <tmp; i++)
{
tmp1 = *(string+i+j);
*(string+i+j) = *(string+tmp2-i);
*(string+tmp2-i) = (char)tmp1;
}

if (flag == 1)
{
//负数,置最高位为 1
switch(radix)
{
case 16:
tmp = ((*string - '0 ') + 8);
if(tmp > 10)
{
*string = (char)((tmp - 10) + 'A ');
}
else
{
*string = (char)(tmp + '0 ');
}
break;

case 8:
*string = (*string + 4);
break;

case 2:
*string = '1 ';
break;
case 10:
default:
break;
}
}

return temp;
}