这样做int与char转换,有危险吗?该如何处理
这样做int与char转换,有危险吗?
那天写代码的时候突然想到可以这样做
个人感觉挺方便,不知道和逐位求余转换的方法相比有没有什么弊端?
------解决方案--------------------
没问题.
------解决方案--------------------
感觉可以,把数字转为字符,而且10个容量已经可以容纳int的4字节了,如果在64位机器上,要考虑int的尺寸了
------解决方案--------------------
直接sprintf就行了哈。参考:
那天写代码的时候突然想到可以这样做
个人感觉挺方便,不知道和逐位求余转换的方法相比有没有什么弊端?
- 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; }
------解决方案--------------------
直接用位操作不是很好么?知道大小端的话直接强转大概是最快的,用字符串。。。。还不如取余呢