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

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

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

最佳答案

litWidthlzw.NewReaderlzw.NewWriter参数从2更改为8。

我对LZW不太了解,但是litWidth似乎确定每个传入字节中的多少位被认为是有效的。因此,值2表示所有输入字节必须为0x00-0x03。

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

08-03 12:54