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

Fei*_*Lee 2 c arrays dynamic-c

我是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");
    }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,我可以将二进制值存储arr。但是,与其获得二进制等价物:101000,现在的数组就像{0, 0, 0, 1, 0, 1},与正确答案相反。所以问题是,如何以正确的顺序获取数组或翻转数组?我肯定有一件事,那就是最大数组长度不会超过8元素。

此转换将重复使用。因此,我计划将其放入函数中,以便能够调用该函数,传入整数,然后将数组作为返回值。因此,另一个问题是,将数组作为返回值是否可行?

Joh*_*age 5

您可以通过使用指向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;
}
Run Code Online (Sandbox Code Playgroud)