我想得到
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','\0'};
你有它的方式,你使用 ascii 值1
而不是字符'1'
,你应该添加一个空终止字节'\0'
,以便数组可以用作字符串。
然后,你可以
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;
}