【发布时间】:2015-07-23 03:52:46
【问题描述】:
我对 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 中的值已经是二进制的。有很多不同的方法可以做到这一点,特别是如果你征集你所知道的关于计算机如何存储数据的知识。但我猜这是一个班级的作业,因为这是大多数学校让你早做的事情。
-
嗨奎因,这不是一个任务。我放学后很远。只是我实际上在 C#、PHP 和 JAVA 方面做得更多。不是任何 C 语言。从 int 中打印为 BINARY 很容易,但要存储它们,我还不能接球。
-
你不能在C中传递一个数组。你必须在函数中
malloc并返回一个指向地址的指针。 -
@M.Shaw
struct R { unsigned char ar[8]; }; struct R func(int value) { struct R r; .... return r; }- 如果您将一个固定数组埋入struct,您可以按值返回它。如果询问,编译器将生成适当的代码来执行此操作。对于这项任务来说,这是否需要或可取是一个不同的问题。