2

正常に動作している Hamming-Code 4,7 をシミュレートしようとしています。論理的に少し単純化するために、本当にビットの代わりにブール配列を使用しています。いくつかの文字を入力すると、ASCII に変換され、シミュレーションが続行されます。結局のところ、すべての [] が 1 ビットに等しい長さ 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;   
 }
4

1 に答える 1

0

私はそれを徹底的に歩いていませんが、整数除算の切り捨てによる1つのエラーでオフになっていると思います. ループ条件bool.length/8は特に間違っているようです。である場合bool.lengthはです。同様に、それ以降は 1 です。そのため、配列の末尾にある不完全なバイトは常に無視されます。に変えてみてはいかがでしょう。0-7bool.length/80bool.length8-15bool.length/8(bool.length/8)+1

于 2015-11-09T22:02:51.500 に答える