gpt4 book ai didi

C - 将整数转换为二进制数组

转载 作者:行者123 更新时间:2023-12-05 01:29:22 29 4
gpt4 key购买 nike

我对 C 语言非常陌生。我需要一个小程序来将 int 转换为二进制,并且二进制最好存储在一个数组中,以便我可以进一步将它们分开以进行解码。我有以下内容:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int arr[20];
int dec = 40;
int i = 0, ArrLen;

if(dec > 0)
{
while(dec > 0)
{
arr[i] = dec % 2;
i++;
dec = dec / 2;
}
}
else
{
printf("Invalid Number");
}
}

从上面的代码中,我可以将二进制值存储在arr中。但不是得到二进制等效项:101000,数组现在类似于 {0, 0, 0, 1, 0, 1},这是 反转的 的正确答案。所以问题是,如何以正确的顺序获得一个数组或者可能翻转它?我有一件事是肯定的,那就是数组的最大长度不会超过 8 个元素。

此转换将被重复使用。所以我打算把它放在一个函数中,这样我就可以调用该函数,传入一个整数,然后将数组作为返回值。那么另一个问题是,获取一个数组作为返回值是否可行?

最佳答案

您可以使用指向 int 的指针来参数化数组。参数化位数也可能很有用。

void int_to_bin_digit(unsigned int in, int count, int* out)
{
/* assert: count <= sizeof(int)*CHAR_BIT */
unsigned int mask = 1U << (count-1);
int i;
for (i = 0; i < count; i++) {
out[i] = (in & mask) ? 1 : 0;
in <<= 1;
}
}

int main(int argc, char* argv[])
{
int digit[8];
int_to_bin_digit(40, 8, digit);
return 0;
}

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

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