经过几个小时的测试,如果将数据从converMain []传输到converMain1 [],则我将问题缩小为单个for循环,而不是嵌套的for循环(第64行) 1,Ive经过检查,其他一切正常,只是这个for循环。
int converMain[14];
converMain1[0] = 1;
int g = 1;
for (int i = 1; i < 19; i++) {
if (i == 1 || 2 || 4 || 8) { //tests if we are on a parody bit
converMain1[i] = p[i]; //puts parody bit in Main1 array
g++; //this variable helps sync the bits in the
//right spot in the Main1 array
}
else {
converMain1[i] = converMain[i - g];
//puts binary stored in Main array into Main1 array with correct sync
}
}
输出:
0001011 h 1010011 e 1001111101111111101 0010 392953 104 101 00010111010011
parody bits ^^ ^ ^
0011011 l 0011011 l 1001111101111111101 0010 392953 108 108 00110110011011
parody bits ^^ ^ ^
1111011 o 1110111 w 1101011101111111101 1000 392939 111 119 11110111110111
parody bits ^^ ^ ^
1111011 o 0100111 r 1111011101111111101 1100 392943 111 114 11110110100111
parody bits ^^ ^ ^
0011011 l 0010011 d 1111111111111111101 1111 393215 108 100 00110110010011
parody bits ^^ ^ ^
1000010 ! 1000010 ! 1011011101111111101 0100 392941 33 33 10000101000010
parody bits ^^ ^ ^
我们应该期望最右边的数字被串入 此处的数字位于中间,并且箭头忽略了箭头的位置,因为这些是模仿位, 只是将它们移过来,然后放下其余的数组。
答案 0 :(得分:0)
if (i == 1 || 2 || 4 || 8)
总是 正确。
if ((i == 1) || (2) || (4) || (8))
是编译器读取它的方式,因此它是对的,至少在2
处停止。
自然的解决方案是if (i == 1 || i == 2 || i == 4 || i == 8) ...
。