我编写了一个程序来执行运行长度编码。在典型情况下,如果文本是
AAAAAABBCDEEEEGGHJ
运行长度编码将使它
A6B2C1D1E4G2H1J1
但它为每个非重复字符添加了额外的 1。由于我正在使用它压缩 BMP 文件,因此我想放置一个标记“$”来表示重复字符的出现(假设图像文件具有大量重复文本)。
所以它看起来像
$A6$B2CD$E4$G2HJ
对于当前示例,它的长度是相同的,但 BMP 文件存在显着差异。现在我的问题在于解码。碰巧一些 BMP 文件具有模式,$<char><num>
即$I9
在原始文件中,所以在压缩文件中也包含相同的文本。$I9
,但是在解码后它会将其视为重复的 I 重复 9 次!所以它会产生错误的输出。我想知道的是我可以使用哪个符号来标记重复字符(运行)的开始,这样它就不会与原始来源冲突。