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
元素。
此转换将重复使用。因此,我计划将其放入函数中,以便能够调用该函数,传入整数,然后将数组作为返回值。因此,另一个问题是,将数组作为返回值是否可行?
您可以通过使用指向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)