我正在尝试将整数 10 转换为二进制数 1010。
此代码尝试执行此操作,但我在 strcat() 上遇到段错误:
int int_to_bin(int k)
{
char *bin;
bin = (char *)malloc(sizeof(char));
while(k>0) {
strcat(bin, k%2);
k = k/2;
bin = (char *)realloc(bin, sizeof(char) * (sizeof(bin)+1));
}
bin[sizeof(bin)-1] = '\0';
return atoi(bin);
}
在C语言中如何将整数转换为二进制?
如果您想将一个数字转换为另一个数字(不是数字到字符串),并且可以使用较小的范围(对于 32 位整数的实现为 0 到 1023),则不需要添加char*
到解决方案
unsigned int_to_int(unsigned k) {
if (k == 0) return 0;
if (k == 1) return 1; /* optional */
return (k % 2) + 10 * int_to_int(k / 2);
}
光环幽灵 https://stackoverflow.com/users/3543287/halosghost建议将代码压缩成一行
unsigned int int_to_int(unsigned int k) {
return (k == 0 || k == 1 ? k : ((k % 2) + 10 * int_to_int(k / 2)));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)