我正在尝试使用 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 压缩的数据。
最佳答案
将 lzw.NewReader
和 lzw.NewWriter
的 litWidth
参数从 2 更改为 8。
我不太了解 LZW,但看起来 litWidth
决定了每个传入字节中有多少位被认为是重要的。因此,值为 2 意味着所有输入字节必须为 0x00 - 0x03。
参见 http://play.golang.org/p/svjeVFntuE LZW 往返的最小示例。 7 的 litWidth
有效(但可能对 UTF-8 文本不安全),任何小于 7 的值都会失败。
关于戈朗 : can't decompress data with lzw package,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201551/