【问题标题】:Extra byte(s) after encoding/decoding编码/解码后的额外字节
【发布时间】:2012-05-09 20:53:46
【问题描述】:

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

  1. 编码算法接收K位,结果返回N位。
  2. 解码算法接收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

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

【问题讨论】:

    标签: algorithm encoding byte decoding extra


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-25
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 2020-11-17
        • 1970-01-01
        • 2011-10-04
        相关资源
        最近更新 更多