在此功能的最后部分需要一些帮助:
char *lfsr(char *bin)
{
//bits significativos para fazer o xor 128 -> 128,126,101,99;
int bits[4];
int bit;
if(bin[0] == '0')
bits[0] = 0;
else if(bin[0] == '1')
bits[0] = 1;
if(bin[2] == '0')
bits[1] = 0;
else if(bin[2] == '1')
bits[1] = 1;
if(bin[21] == '0')
bits[2] = 0;
else if(bin[21] == '1')
bits[2] = 1;
if(bin[19] == '0')
bits[3] = 0;
else if(bin[19] == '1')
bits[3] = 1;
bit = bits[0] ^ bits[1] ^ bits[2] ^ bits[3] ^ 1;
//reconstruir o vector de char depois do lfsr
for(int i = 127; i >= 1; i--)
{
bin[i] = bin[i - 1];
}
bin[0] = (int)bit;
return bin;
}
为什么bin[0]
的值是一个奇怪的字符而不是0或1?
有人可以帮我吗?
提前致谢。 Cumps!
答案 0 :(得分:2)
问题是字符'0'
和整数0
不同。字符'0'
实际上是ascii值48.
尝试bin[0] = (char)(48 + bit);
答案 1 :(得分:0)
好吧,可能你的一个if-elses不起作用。 bin [0],bin [2],bin [21]或bin [19]既不是'0'也不是'1'。 尝试使用您的测试数据运行此代码:
char *lfsr(char *bin)
{
//bits significativos para fazer o xor 128 -> 128,126,101,99;
int bits[4];
int bit;
if(bin[0] == '0')
bits[0] = 0;
else
{
if(bin[0] == '1')
bits[0] = 1;
else
printf("First if-else failed. bin[0] : %c\n", bin[0]);
}
if(bin[2] == '0')
bits[1] = 0;
else
{
if(bin[2] == '1')
bits[1] = 1;
else
printf("Second if-else failed. bin[2] : %c\n", bin[2]);
}
if(bin[21] == '0')
bits[2] = 0;
else
{
if(bin[21] == '1')
bits[2] = 1;
else
printf("Third if-else failed. bin[21] : %c\n", bin[21]);
}
if(bin[19] == '0')
bits[3] = 0;
else
{
if(bin[19] == '1')
bits[3] = 1;
else
printf("Fourth if-else failed. bin[19] : %c\n", bin[19]);
}
bit = bits[0] ^ bits[1] ^ bits[2] ^ bits[3] ^ 1;
//reconstruir o vector de char depois do lfsr
for(int i = 127; i >= 1; i--)
{
bin[i] = bin[i - 1];
}
bin[0] = (int)bit;
return bin;
}
答案 2 :(得分:0)
我是一名C语言心理学家,我的水晶球告诉我,在你的课程中,你做到了这一点:
printf("the value in bit[0] is %c\n", bit[0]);