压缩小文件的算法(345字节)

Hel*_*osh 4 compression algorithm

我正在寻找一种可以无损压缩少量噪声数据的软件; 例:

ZmNiYWNma3F5gYqSmqCkpqenpKGdmJONiIN/e3d1c3FxcXFxcnN0dXZ3eXp7fHx9fn5/gIGDhISFhYWFhIOCgYGAgICBgoOEhYeIiYmJiYiGhIF+fHl3dHNyc3N1d3p9gIOGiYuMjY2NjIuKiIeFg4GAfnx7eXl4eHl5enx9fn5/gICAgYGBgYGBgYGBgoKDhISEhISEhIOCgoGAgH9/fn5+fn5/gICAgICAgICAgICAgICAf39/gICBgoOFhoeIiIiIiIeGhYOCgH99fHt6enp6e3x9foCAgoKDg4ODgoKBgH59fHt7e3t8fX5/gIKDhIWFhoaGhoaFhISDgoKBgQ==
Run Code Online (Sandbox Code Playgroud)

原始数据:345B(100%),gzip:280B(81%),bzip2:289B(84%),lzop:415B(120%),

还有其他方法我应该尝试吗?

Dan*_*_ds 6

由于数据是Base64编码的(每3个字节变成4个字节),第一步是解码它(压缩数据无论如何都是二进制的):

344 bytes -> 256 bytes
Run Code Online (Sandbox Code Playgroud)

然后,使用标准winzip的简单测试显示压缩到170 bytes(COMP_DEFLATE块).你应该和gzip/zlib一样.

这可能会因压缩系数较高而略微变小.

压缩原始数据会产生243个字节(.zip文件中的数据块,完整的zip文件是359个字节,但您不需要所有额外的数据).

因此,在解码数据上使用zlib,应将其压缩到±170字节.


查看解码数据,可以实现更好的压缩.但这取决于具有相同结构的其他数据.

解码数据的十六进制转储(许多值重复,或仅稍微改变):

66 63 62 61 63 66 6B 71 79 81 8A 92 9A A0 A4 A6
A7 A7 A4 A1 9D 98 93 8D 88 83 7F 7B 77 75 73 71
71 71 71 71 72 73 74 75 76 77 79 7A 7B 7C 7C 7D
7E 7E 7F 80 81 83 84 84 85 85 85 85 84 83 82 81
81 80 80 80 81 82 83 84 85 87 88 89 89 89 89 88
86 84 81 7E 7C 79 77 74 73 72 73 73 75 77 7A 7D
80 83 86 89 8B 8C 8D 8D 8D 8C 8B 8A 88 87 85 83
81 80 7E 7C 7B 79 79 78 78 79 79 7A 7C 7D 7E 7E
7F 80 80 80 81 81 81 81 81 81 81 81 81 82 82 83
84 84 84 84 84 84 84 83 82 82 81 80 80 7F 7F 7E
7E 7E 7E 7E 7F 80 80 80 80 80 80 80 80 80 80 80
80 80 80 80 7F 7F 7F 80 80 81 82 83 85 86 87 88
88 88 88 88 87 86 85 83 82 80 7F 7D 7C 7B 7A 7A
7A 7A 7B 7C 7D 7E 80 80 82 82 83 83 83 83 82 82
81 80 7E 7D 7C 7B 7B 7B 7B 7C 7D 7E 7F 80 82 83
84 85 85 86 86 86 86 86 85 84 84 83 82 82 81 81
Run Code Online (Sandbox Code Playgroud)

只有在快速查看之后:平均每字节应该可以达到大约2到3位,从而产生6496个字节.


仔细看看数据:

大多数价值观都没有那么大的改变.如果所有数据都与此类似,则可以使用某些自定义代码实现高压缩率.例如,根据数据块(第一个数据点仅需要4位),差异可以存储在1,2,3或4位中.另一种方法是使用现有算法(zlib,霍夫曼编码等)来压缩差异(增量值),而不是完全自定义代码.

具有2轮delta编码的十进制值:

102        
99    -3    
98    -1    2
97    -1    0
99     2    3
102    3    1
107    5    2
113    6    1
121    8    2
129    8    0
138    9    1
146    8   -1
154    8    0
160    6   -2
164    4   -2
166    2   -2
167    1   -1
167    0   -1
164   -3   -3
161   -3    0
157   -4   -1
152   -5   -1
147   -5    0
141   -6   -1
136   -5    1
131   -5    0
127   -4    1
123   -4    0
119   -4    0
117   -2    2
115   -2    0
113   -2    0
113    0    2
113    0    0
113    0    0
113    0    0
114    1    1
115    1    0
116    1    0
117    1    0
118    1    0
119    1    0
121    2    1
122    1   -1
123    1    0
124    1    0
124    0   -1
125    1    1
126    1    0
126    0   -1
127    1    1
128    1    0
129    1    0
131    2    1
132    1   -1
132    0   -1
133    1    1
133    0   -1
133    0    0
133    0    0
132   -1   -1
131   -1    0
130   -1    0
129   -1    0
129    0    1
128   -1   -1
128    0    1
128    0    0
129    1    1
130    1    0
131    1    0
132    1    0
133    1    0
135    2    1
136    1   -1
137    1    0
137    0   -1
137    0    0
137    0    0
136   -1   -1
134   -2   -1
132   -2    0
129   -3   -1
126   -3    0
124   -2    1
121   -3   -1
119   -2    1
116   -3   -1
115   -1    2
114   -1    0
115    1    2
115    0   -1
117    2    2
119    2    0
122    3    1
125    3    0
128    3    0
131    3    0
134    3    0
137    3    0
139    2   -1
140    1   -1
141    1    0
141    0   -1
141    0    0
140   -1   -1
139   -1    0
138   -1    0
136   -2   -1
135   -1    1
133   -2   -1
131   -2    0
129   -2    0
128   -1    1
126   -2   -1
124   -2    0
123   -1    1
121   -2   -1
121    0    2
120   -1   -1
120    0    1
121    1    1
121    0   -1
122    1    1
124    2    1
125    1   -1
126    1    0
126    0   -1
127    1    1
128    1    0
128    0   -1
128    0    0
129    1    1
129    0   -1
129    0    0
129    0    0
129    0    0
129    0    0
129    0    0
129    0    0
129    0    0
130    1    1
130    0   -1
131    1    1
132    1    0
132    0   -1
132    0    0
132    0    0
132    0    0
132    0    0
132    0    0
131   -1   -1
130   -1    0
130    0    1
129   -1   -1
128   -1    0
128    0    1
127   -1   -1
127    0    1
126   -1   -1
126    0    1
126    0    0
126    0    0
126    0    0
127    1    1
128    1    0
128    0   -1
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
128    0    0
127   -1   -1
127    0    1
127    0    0
128    1    1
128    0   -1
129    1    1
130    1    0
131    1    0
133    2    1
134    1   -1
135    1    0
136    1    0
136    0   -1
136    0    0
136    0    0
136    0    0
135   -1   -1
134   -1    0
133   -1    0
131   -2   -1
130   -1    1
128   -2   -1
127   -1    1
125   -2   -1
124   -1    1
123   -1    0
122   -1    0
122    0    1
122    0    0
122    0    0
123    1    1
124    1    0
125    1    0
126    1    0
128    2    1
128    0   -2
130    2    2
130    0   -2
131    1    1
131    0   -1
131    0    0
131    0    0
130   -1   -1
130    0    1
129   -1   -1
128   -1    0
126   -2   -1
125   -1    1
124   -1    0
123   -1    0
123    0    1
123    0    0
123    0    0
124    1    1
125    1    0
126    1    0
127    1    0
128    1    0
130    2    1
131    1   -1
132    1    0
133    1    0
133    0   -1
134    1    1
134    0   -1
134    0    0
134    0    0
134    0    0
133   -1   -1
132   -1    0
132    0    1
131   -1   -1
130   -1    0
130    0    1
129   -1   -1
129    0    1
Run Code Online (Sandbox Code Playgroud)