这样做int与char转换,有危险吗?该如何处理

这样做int与char转换,有危险吗?
那天写代码的时候突然想到可以这样做
个人感觉挺方便,不知道和逐位求余转换的方法相比有没有什么弊端?

C/C++ code
#include <stdio.h>
#include <stdlib.h>

char *int2str(const int a, char *b);

int main()
{
    int a = 123456789;
    char *b;
    b = (char *)malloc(sizeof(char) * 10);

    b = int2str(a, b);
    printf("%s\n", b);

    free(b);
    return 0;
}

char *int2str(const int a, char *b)
{
    sprintf(b, "%d", a);
    return b;
}


------解决方案--------------------
没问题.
------解决方案--------------------
感觉可以,把数字转为字符,而且10个容量已经可以容纳int的4字节了,如果在64位机器上,要考虑int的尺寸了
------解决方案--------------------
直接sprintf就行了哈。参考:
C/C++ code

int main(int argc, char** argv)
{
    int number = 123456789;
    int digits = ceil(log((double)number) / log((double)10) + 0.5);    // 算出number的位数
    char* dest = (char*)malloc(sizeof(char) * (digits + 1));        // 再加1,以便放置字符串的结束符
    memset(dest, 0, digits + 1);                                    // 全部设置为0
    sprintf(dest, "%d", number);
    printf("%s\n", dest);

    return 0;
}

------解决方案--------------------
直接用位操作不是很好么?知道大小端的话直接强转大概是最快的,用字符串。。。。还不如取余呢