0

我正在尝试使用 Go 创建压缩字符串池。这是我的代码 - http://play.golang.org/p/T5usLfU0fA

我无法解压缩使用 compress/lzw 包压缩的 bin。lzw.Writer 的输入是 [104 101 108 108 111 32 119 111 114 108 100],lzw.Reader 的输出是 [0 1 0 0 3 0 3 3 2 0 0]。他们肯定不匹配。

我正在使用相同的参数(除了缓冲区)创建读取器和写入器。lzw.Reader 的缓冲区包含先前使用 lzw.Writer 压缩的数据。

4

1 回答 1

5

litWidth将参数从 2更改lzw.NewReaderlzw.NewWriter8。

我对 LZW 了解不多,但它看起来litWidth决定了每个传入字节中有多少位被认为是重要的。因此,值为 2 意味着所有输入字节必须为 0x00 - 0x03。

有关LZW 往返的最小示例,请参见http://play.golang.org/p/svjeVFntuE 。A litWidthof 7 作品(但对于 UTF-8 文本可能不安全),任何小于 7 的作品都失败。

于 2014-04-21T18:52:39.067 回答