在Wikipedia上阅读有关LZW的信息,我已经考虑过关注。
我们正处于编码过程的开始,用于一个字节字符串的代码0-255,用于写入编码文件的下一个代码大小为9:
(每个字符串的位数),(字符串的插槽范围):
8,0..255
9,256..511
10,512..1023
但是为什么我们不能(有见识,例如,代码的大小为9),重复使用以前的代码并整理出像金字塔这样的字典:
vector<vector<CodeString>> dictionary(maxCodeLen - 7);
并将其初始化为
dictionary[0](256);
dictionary[1](512);
dictionary[2](1024);
并根据当前代码的大小选择特定字符串的代码(例如10101010和010101010是不同的代码),解码器可以通过增加当前大小的代码(确定金字塔中的数组)并从每个代码的开头开始对其进行解码金字塔中的数组。
因此,由于启用了有价值的9,10,11大小的代码,我们可以通过LZW算法实现更好的速度/大小比。
为什么不申请?