Int 数组到 strtol 的字符串

Int array to string for strtol

我想得到

int sign[8]= {0,1,0,1,0,1,1,1};        

一样在 strtol 函数上使用
char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);

我不知道如何在 strol 中使用符号。当我使用

 c = (char) strtol("01010111", NULL, 2);

一切正常,我想得到这样的结果。

请帮忙:)

你需要改变这个

int sign[8]= {0,1,0,1,0,1,1,1}; 

char sign[9]= {'0','1','0','1','0','1','1','1','[=11=]'}; 

你的方式是使用 ascii 值 1 而不是字符 '1',你应该添加一个空终止字节 '[=15=]' 以便可以使用数组作为字符串。

然后,您可以

char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);

问题是 sign 不是字符串,它是一个小整数数组。

您可以将它们直接解释为位并将数组转换为数字,通过 strtol() 没有意义(而且,事实上,按照您的方式在 C 中进行操作是相当不惯用的) .

只是循环:

unsigned int array_to_int(const int *bits, size_t num_bits)
{
  unsigned int ret = 0, value = 1;
  for(; num_bits > 0; --num_bits, value *= 2)
    ret += value * bits[num_bits - 1];
  return ret;
}