C strtol的Int数组到字符串
我想去C strtol的Int数组到字符串,c,string,int,strtol,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); 我不知道如何在strol中使用符号。当我使用 c = (char) strtol("01010111", NULL, 2); 一切都很好,我想得到这样的结果 请帮助:)您需要更改此设置 int sign[8]= {0,1,0,1,0,1,1,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);
一切都很好,我想得到这样的结果
请帮助:)您需要更改此设置
int sign[8]= {0,1,0,1,0,1,1,1};
到
按照您的方式,如果字符'1'
,则使用ascii值1
,并且您应该添加一个空终止字节'\0'
,以便数组可以用作字符串
然后,你可以
char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);
你需要改变这个
int sign[8]= {0,1,0,1,0,1,1,1};
到
按照您的方式,如果字符'1'
,则使用ascii值1
,并且您应该添加一个空终止字节'\0'
,以便数组可以用作字符串
然后,你可以
char c = (char) strtol(sign, NULL, 2);
printf("%c\n", c);
问题在于符号不是字符串,而是一个小整数数组 您可以直接将它们解释为位,并将数组转换为数字,通过
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;
}
问题在于符号不是字符串,而是一个小整数数组 您可以直接将它们解释为位,并将数组转换为数字,通过
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符号[8]转换为char符号[8]:(检查了谷歌的一些解决方案,一切都很顺利。)wrong@user2973468你为什么要强制转换?因为我所有的程序都在处理这个int数组,现在我想知道如何将它强制转换/复制到char数组。如果不了解更多信息,就不可能帮助你,你不应该这样做,因为
sizeof(char)!=sizeof(int)
而且它违反了严格的别名规则。你可以从int*
到unsigned char*
用另一种方法,但这只适用于unsigned char*
AFAIK。或者你可以用void*
代替。好的,但你能告诉我如何将int-sign[8]={0,1,0,0,0,1,1};复制到char signed[9]={'0','1','0','1','0','1','1','1','\0'};?是的,它可以工作,但我想知道如何从int符号[8]转换为char符号[8]:(检查了谷歌的一些解决方案,一切都很顺利。)wrong@user2973468你为什么要强制转换?因为我所有的程序都在处理这个int数组,现在我想知道如何将它强制转换/复制到char数组。如果不了解更多信息,就不可能帮助你,你不应该这样做,因为sizeof(char)!=sizeof(int)
而且它违反了严格的别名规则。你可以从int*
到unsigned char*
用另一种方法,但这只适用于unsigned char*
AFAIK。或者你可以用void*
代替。好的,但你能告诉我如何将int-sign[8]={0,1,0,0,0,1,1};复制到char signed[9]={'0','1','0','1','0','1','1','1','\0'};?你也可以用位运算符来写。在这种情况下,我认为它更清晰。ret |=bits[num|bits-1]你也可以用位运算符来写。在这种情况下,我认为它更清晰。ret |=bits[num| bits-1]