我想要
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);
一切都很好,我希望得到这样的结果。
请帮助:)
答案 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;
}