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;
}
我想得到
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;
}