私は現在、エラー訂正巡回コードを介してメッセージをエンコードおよびデコードするプログラムを作成しています。私のアルゴリズムは 1 つのメッセージに対しては正常に動作しますが、文字列のデコードで問題が発生しました。エンコードとデコードは次のように機能します。
- エンコード アルゴリズムはKビットを受け取り、結果としてNビットを返します。
- デコードアルゴリズムはNビットを受け取り、結果としてKビットを返します。
たとえば、文字列をエンコードおよびデコードしたいとします。Kビットが読み取られるまで、文字列をバイト配列に変換し、ビットごとに読み取ります。次に、このKビットをエンコードし、受信したすべてのNビットをバイト配列にビットごとに書き込みます。等々。デコードは同じですが、Nビットをデコードし、バイト配列にKビットをビット単位で書き込みます。私の問題の例があります。
K = 9の場合(問題を視覚化するための各行の長さはKです)
0 ][ 11100000 ]
00 ][ 0011101
010 ] [ 111000
0000 ][ 00111
11010 ][ 1110
111010 ][ 001
0111010 ][ 11
_ _ _ _ _ _ [ 0
最後の行に 1 つのゼロがあり、前の 9 ビットに収まりませんでした。したがって、完全なKビット メッセージのようにエンコードします。もちろん、デコード後、 Kビットのメッセージを受け取り、余分なバイトが表示されます。
[ 00000000 ][ 0
そして、この余分なバイトを決定する方法がわかりません。エンコード前にこのゼロバイトがあった可能性があります。私の問題をどうすればよいかアドバイスをいただけませんか。アルゴリズムを変更する必要があるかもしれません (少しずつ読むべきではないかもしれません)。どんな助けにも感謝します。ありがとう。