gpt4 book ai didi

在 C 中将无符号长整型转换为二进制

转载 作者:行者123 更新时间:2023-11-30 18:37:51 25 4
gpt4 key购买 nike

我正在尝试将 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 但随后它甚至没有进入循环。

有什么想法为什么会发生这种情况吗?

提前致谢!

最佳答案

您正在初始化 val 以设置所有位。因此,当您应用 & 时,比较结果将为 false,除非 k 已设置所有位。

您只想在 val 中设置一位,并且需要从最高位开始。所以像这样初始化它:

for (val = 1UL << (sizeof(unsigned long)*8-1); val > 0; val >>= 1) {

然后当你这样调用它时:

printf("binary=%s\n",long_to_binary(0x12345678));

你得到这个:

binary=0000000000000000000000000000000000010010001101000101011001111000

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

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