这样做int与char转换,有危险吗?
那天写代码的时候突然想到可以这样做
个人感觉挺方便,不知道和逐位求余转换的方法相比有没有什么弊端?
#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;}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;}
[解决办法]
直接用位操作不是很好么?知道大小端的话直接强转大概是最快的,用字符串。。。。还不如取余呢