JJRhythm - 1 month ago 4x
C Question

Converting an integer to binary in C

I'm trying to convert an integer 10 into the binary number 1010.

This code attempts it, but I get a segfault on the 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);
}
``````

How do I convert an integer to binary in C?

If you want to transform a number into another number (not number to string of characters), and you can do with a small range (0 to 1023 for implementations with 32-bit integers), you don't need to add `char*` to the solution

``````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 suggested to compact the code into a single line

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