gpt4 book ai didi

在C中将整数转换为二进制

转载 作者:太空狗 更新时间:2023-10-29 17:27:10 25 4
gpt4 key购买 nike

我正在尝试将整数 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 中将整数转换为二进制?

最佳答案

如果你想将一个数字转换为另一个数字(不是数字到字符串),你可以使用一个小范围(0 到 1023 对于 32 位整数的实现),你不需要添加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);
}

HalosGhost建议将代码压缩成一行

unsigned int int_to_int(unsigned int k) {
return (k == 0 || k == 1 ? k : ((k % 2) + 10 * int_to_int(k / 2)));
}

关于在C中将整数转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5488377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com