int数组到strtol的字符串

时间:2015-01-09 14:18:04

标签: c string int strtol

我想要

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

用于像

这样的strtol函数
char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);

我不知道如何施放标志用于散步。当我使用

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

一切都很好,我希望得到这样的结果。

请帮助:)

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

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

你可以直接将它们解释为位并将数组转换为数字,通过strtol()是没有意义的(事实上,在C语言中它是非常不恰当的。)< / p>

只是循环:

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