我目前正在编写程序来通过纠错循环码对消息进行编码和解码。我的算法适用于单个消息,但我在解码字符串时遇到了一些问题。编码和解码工作如下:
- 编码算法接收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
最后一行有一个零,它不适合前 9 位。所以我将它编码为完整的K位消息。当然,解码后我收到K位消息并出现额外的字节。
[ 00000000 ][ 0
而且我不知道如何确定这个额外的字节。可能这个零字节在编码之前就在那里。你能给我一些建议,我应该如何处理我的问题。也许我应该改变我的算法(也许我不应该一点一点地阅读它)。我会很感激任何帮助。谢谢。