我正在编写程序,通过纠错循环码对消息进行编码和解码。我的算法适用于单个消息,但我在解码字符串时遇到了一些问题。编码和解码工作如下:
例如,我想对字符串进行编码和解码。我将字符串转换为字节数组并逐位读取,直到读取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
我不知道如何确定这个额外的字节。在编码之前可能是这个零字节。 你能给我一些建议,我该怎么处理我的问题。可能是我应该改变我的算法(可能是我不应该一点一点地读它)。我会感激任何帮助。感谢。
答案 0 :(得分:0)
基于可变长度的比特序列的编码算法在“自然”中相当普遍。在Rosetta Code中查看Bitwise IO的解决方案,他们可能会给你一些想法。
答案 1 :(得分:0)
我决定用0xFF字节填补这个空白。我使用UTF8编码,它不能有0xFF字节,所以我在解码后删除了消息末尾的所有0xFF字节。