C中的十进制到二进制算法

Tud*_*los 7 c algorithm binary decimal

我试图使用以下算法将十进制数转换为C中的二进制数.我不明白为什么它对某些输入不能正常工作(例如1993年我得到1420076519).

int aux=x;
long bin=0;
while (aux>0)
{
    bin=bin*10+aux%2;
    aux=aux/2;
}
printf("%d in decimal is %ld in binary.", x, bin);
Run Code Online (Sandbox Code Playgroud)

Flo*_*ciu 4

当您打印 long 时,您不会打印二进制文件。转换为二进制或显示十进制数的二进制表示形式的最佳方法是将其存储在字符串中。波纹管是另一个 SO答案中提供的解决方案

void getBin(int num, char *str)
{
  *(str+5) = '\0';
  int mask = 0x10 << 1;
  while(mask >>= 1)
    *str++ = !!(mask & num) + '0';
}
Run Code Online (Sandbox Code Playgroud)