我尝试使用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压缩的数据。
答案 0 :(得分:5)
将litWidth
和lzw.NewReader
的{{1}}参数从2更改为8。
我对LZW了解不多,但看起来lzw.NewWriter
确定每个输入字节中有多少位被认为是重要的。因此,值为2表示所有输入字节必须为0x00 - 0x03。
有关LZW往返的最小示例,请参阅http://play.golang.org/p/svjeVFntuE。一个litWidth
的7个作品(但对于UTF-8文本可能不安全),任何小于7的作品都会失败。