我正在尝试模拟一个正常工作的汉明码4,7。我正在处理真正位的布尔数组,以便在逻辑上简化它。我输入了一些字符,转换为ASCII并继续模拟。毕竟我最终得到一个长度为numberofcharacters * 8的BooleanArray,其中每个[]等于一位。这个方法应该只是将它重新转换回ascii代码,并且它可以半工作。如果ASCII数是偶数,那么一切都很好,但是当它最后一点奇怪时它总是“忘记”。谢谢你的帮助
亲爱的西蒙private static String booleantoString(boolean[] bool){
int[] array = new int[bool.length/8];
for(int a=0;a<bool.length/8;a++){
for(int n = a*8; n<(a*8+7); n++){
if(bool[n] == true){
array[a] = setBit(array[a],0);
}
array[a] <<= 1;
}
System.out.print("ASCII-Code: " + array[a]+ " ");
System.out.print("Zeichen: " +(char)array[a] + " ");
}
return s;
}
答案 0 :(得分:0)
我没有彻底地走过它,但我认为由于整数除法向下舍入,这是一个错误。循环条件bool.length/8
特别错误。如果bool.length
为0-7
,则bool.length/8
为0
。同样,对于来自bool.length
的任何8-15
,bool.length/8
为1.因此,任何不完整的字节都会被忽略。也许可以尝试将其更改为(bool.length/8)+1
。