我编写了一个程序来执行行程编码.在典型情况下,如果文本是
AAAAAABBCDEEEEGGHJ
运行长度编码将成为它
A6B2C1D1E4G2H1J1
但它为每个非重复字符添加了额外的1.由于我用它压缩BMP文件,我想到放置一个标记"$"来表示重复字符的出现,(假设图像文件有大量的重复文本).
所以它看起来像
$A6$B2CD$E4$G2HJ
对于当前示例,它的长度是相同的,但BMP文件有明显的区别.现在我的问题在于解码.它发生了一些BMP文件具有模式,$
即$I9
在原始文件中,所以在压缩文件中我也包含相同的文本.$I9
但是,在解码时,它会将其视为重复的I,重复9次!所以它会产生错误的输出.我想知道的是我可以使用哪个符号来标记重复字符(运行)的开头,以便它不会与原始源冲突.
为什么不在压缩文件$
中对原始文件$$
中的每个进行编码?
和/或使用其他一些字符而不是$
- 在bmp文件中使用不多的字符.
另请注意,BMP格式具有"内置"RLE压缩 - 在此处,在页面底部附近 - 在"图像数据和压缩"下.
我不知道你正在使用你的程序,或者它只是用于学习,但如果你使用"官方"bmp方法,你的压缩图像在查看之前不需要解压缩.