我想一个unsigned long转换为二进制文件C.转换一个unsigned long二进制用C
char* long_to_binary(unsigned long k)
{
static char c[65];
c[0] = '\0';
unsigned long val;
for (val = ULONG_MAX; val > 0; val >>= 1)
{
strcat(c, ((k & val) == val) ? "1" : "0");
}
return c;
}
我在做什么错在这里?它打印出不正确的值。我试着打印出val
,而不是打印base2的值是一个。所以它打印像3 7 15 ....
我试图将值初始化为ULONG_MAX + 1而不是ULONG_MAX,但它甚至不会进入循环。
任何想法为什么会发生这种情况?
提前致谢!
上的所有信息以二进制已经strored二进制数字电脑格式。使用'strcat'来连续构建一个字符串并不是一个好主意。在添加另一个单个字符后,您如何预期字符串看起来像? – Olaf
'ULONG_MAX'是'unsigned long'可以容纳的**最大**值。你认为'ULONG_MAX + 1'确实如此?使用调试器来遍历代码。至少打印循环中的值。它失败的原因非常明显。 – Olaf
有什么不对。显示测试程序,所以我们也可以运行它。 –