1

我想得到

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);

一切都好,我想得到这样的结果。

请帮忙 :)

4

2 回答 2

2

你需要改变这个

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

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

你有它的方式,你使用 ascii 值1而不是字符'1',你应该添加一个空终止字节'\0',以便数组可以用作字符串。

然后,你可以

char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);
于 2015-01-09T14:20:32.347 回答
2

问题是它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;
}
于 2015-01-09T14:36:58.633 回答