编码/解码后的额外字节

时间:2012-05-02 14:02:37

标签: algorithm encoding byte decoding extra

我正在编写程序,通过纠错循环码对消息进行编码和解码。我的算法适用于单个消息,但我在解码字符串时遇到了一些问题。编码和解码工作如下:

  1. 编码算法接收 K 位,结果返回 N 位。
  2. 解码算法接收 N 位,结果返回 K 位。
  3. 例如,我想对字符串进行编码和解码。我将字符串转换为字节数组并逐位读取,直到读取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

    我不知道如何确定这个额外的字节。在编码之前可能是这个零字节。 你能给我一些建议,我该怎么处理我的问题。可能是我应该改变我的算法(可能是我不应该一点一点地读它)。我会感激任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

基于可变长度的比特序列的编码算法在“自然”中相当普遍。在Rosetta Code中查看Bitwise IO的解决方案,他们可能会给你一些想法。

答案 1 :(得分:0)

我决定用0xFF字节填补这个空白。我使用UTF8编码,它不能有0xFF字节,所以我在解码后删除了消息末尾的所有0xFF字节。

相关问题