我从使用zip压缩的photoshop文件(RFC1951)获得以下数据:
250, 255, 159, 1, 47, 248, 63, 42, 63, 172, 229, 1, 2, 12, 0, 209, 255, 31, 225
解压缩到以下内容,x16:
255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
重新压缩这个让我:
251, 255, 159, 1, 47, 248, 63, 42, 63, 172, 229, 1
为什么这与原始输入完全不同?
(最初在codeplex上发布但没有得到答案:http://dotnetzip.codeplex.com/discussions/406943)
答案 0 :(得分:2)
首先,为了使术语正确,RFC 1951是deflate格式(您的数据是),而不是“zip-compression”。 zip可以使用deflate,但deflate数据然后用zip标题,预告片和目录包装。
其次,一般来说,从来没有任何保证解压缩 - 压缩总会给你同样的东西。大多数压缩器具有不同的压缩级别和其他选项,可以为同一输入提供不同的压缩输出。无损压缩器唯一能保证的是压缩 - 解压缩会给你带来同样的东西。
对于您的特定示例,第一个压缩器投入了一些无关的空块(其中两个)。那个放气流被拆开了:
static
literal 255 255 0
match 29 1
literal 255
match 258 32
match 221 32
end
!
static
end
!
last
static
end
第二台压缩机不包括无关的空块:
last
static
literal 255 255 0
match 29 1
literal 255
match 258 32
match 221 32
end