可能有一种聪明的方法可以做到这一点,但无论如何我都会出错:
-(int*)decimalBinary:(int)decimal
{
int i=0;
int *bin;
while (decimal!=0)
{
bin[i]=decimal%2;
decimal=decimal/2;
i++;
}
return bin;
}
在模线上。为什么 ?还有什么更好的方法让它阵列?
可能有一种聪明的方法可以做到这一点,但无论如何我都会出错:
-(int*)decimalBinary:(int)decimal
{
int i=0;
int *bin;
while (decimal!=0)
{
bin[i]=decimal%2;
decimal=decimal/2;
i++;
}
return bin;
}
在模线上。为什么 ?还有什么更好的方法让它阵列?
声明
int *bin;
为指针留出空间,但不使其指向对象。在使用它之前进行初始化是至关重要的bin
。要解决您的问题,您可以在调用函数 ( )
中声明一个数组,然后传递给您的调用函数。bin[4]
int main
*bin
以下代码改编自This answer on how to print an integer in binary format。 将“二进制数字”存储到 int 数组中添加到以下代码中:
#include <stdio.h> /* printf */
#include <stdlib.h> /* strtol */
const char *byte_to_binary(long x);
int main(void)
{
long lVal;
int i, len, array[18];
char buf[18];
{ /* binary string to int */
char *tmp;
char *b = "11010111001010110";
lVal=strtol(b, &tmp, 2); //convert string in "base 2" format to long int
printf("%d\n", lVal);
}
{
printf("%s", byte_to_binary(lVal));
/* byte to binary string */
sprintf(buf,"%s", byte_to_binary(lVal));
}
len = strlen(buf);
for(i=0;i<len;i++)
{ //store binary digits into an array.
array[i] = (buf[i]-'0');
}
getchar();
return 0;
}
const char *byte_to_binary(long x)
{
static char b[17]; //16 bits plus '\0'
b[0] = '\0';
char *p = b;
int z;
for (z = 65536; z > 0; z >>= 1) //2^16
{
*p++ = (x & z) ? '1' : '0';
}
return b;
}