我有一个程序,它将两个4个字节的整数作为输入,我需要像这样将它们存储到整数数组中...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[]) {
int vals1[32], vals2[32];
int num1 = atoi(argv[1]);
int num2 = atoi(argv[2]);
// so argv[1] might be 47 and I would want to set the values of the vals1 array to reflect that in binary form
}
有什么建议吗?
答案 0 :(得分:1)
第一个任务是将char *
转换为int
,您说过可以。接下来是下一部分,即获取二进制表示形式。为了获取任何数据类型的二进制表示形式,使用 Shift Operator 是最好的方法之一。而且,您可以通过对数据类型进行移位然后执行按位与(即&
与1
)来获得它。例如,如果n
是整数
int n = 47;
for (int i = 0; i < 32; i++)
{
/* It's going to print the values of bits starting from least significant. */
printf("Bit%d = %d\r\n", i, (unsigned int)((n >> i) & 1));
}
因此,使用shift运算符,解决问题的方法类似于
void fun(int n1, int n2)
{
int i, argv1[32], argv2[32];
for (i = 0; i < 32; i++)
{
argv1[i] = ((unsigned int)n1 >> i) & 1;
argv2[i] = ((unsigned int)n2 >> i) & 1;
}
}
您必须注意位顺序,即哪个位存储在数组索引的哪个位置。