最近我一直在考虑在计算机上进行压缩,并偶然发现了这个问题,为什么对于大型文件来说,为什么按位压缩不常见?'。
我试着环顾四周,并没有设法找到任何人谈论这个主题,至少我的意思是,我可能不是在谈论相同的主题,或者没有使用正确的名称,所以我会这样做解释我的想法。
假设我们有以下字符串var Dog = function(name) {
this.dogName = name;
this.sayGrr = function(string) {
console.log('Grrr!')
}
};
...
Animal.prototype = {
makeItCat: function() {},
makeItDog: function(name) {
Dog.call(this, name);
},
};
它的二进制值是:
01001000011010010010000001001001001001110110110100100000011000010010000001110011011101000111001001101001011011100110011100100001
正如您在二进制序列中所看到的,还有几个重复出现的0和1和1的序列。我的想法是删除它们,并包含一个索引文件,准确说明你需要添加0或1的位置以及多少,例如让它将它分成前三个字节:
01001000 01101001 00100000
索引文件如下所示:
[2,1] [5,3]
[1,1] [5,1]
[0,1] [3,4]
二进制文件将是:
"Hi I'm a string!"
当然,因为在到达01010 010101 010
之前会有填充位
我的问题是,为什么这种类型的压缩不常见,如果它是我希望看到它在现实世界中实际使用的一个例子,如果它不是我想知道为什么它没有被使用。
答案 0 :(得分:0)
此算法适用于某些类型的数据。但是,它远不如正在使用的其他算法有效。
例如,算法的LZ工具可以参考之前看到的数据。它可以像您的算法一样引用零字符串,但它也可以引用任何其他模式。它更通用。
我不认为您的算法会使用常见的英文文本来实现压缩。有太多的1位存储位位需要很多位。