我对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
个元素。这种转换将被重复使用。 因此,我计划将其放入一个函数中,这样我就可以调用该函数,传递一个整数,然后将数组作为返回值。所以另一个问题是,能否获得数组作为返回值?
malloc
函数来分配内存,并返回指向该地址的指针。 - M. Shawstruct R { unsigned char ar[8]; }; struct R func(int value) { struct R r; .... return r; }
- 如果您在一个结构体中嵌入了一个固定长度的数组,您是可以通过值返回它的。如果需要的话,编译器会生成适当的代码来完成此操作。但这是否对于当前的任务是必要或者合适的,这是一个不同的问题。 - WhozCraig