go zlib 压缩问题

  • 这两段代码第一个能够显示正确结果。第二个不能显示正确结果。
func compress(input []byte) []byte {
	var in bytes.Buffer
	zlibWriter, err := zlib.NewWriterLevel(&in, zlib.BestCompression)
	if err != nil {
		return nil
	}
	zlibWriter.Write(input)
	zlibWriter.Close()

	fmt.Printf("第一个函数: before %v\n", in.Bytes())
	return in.Bytes()
}

func compressContractFile(input []byte) error {
	var in bytes.Buffer
	zlibWriter, err := zlib.NewWriterLevel(&in, zlib.BestCompression)
	if err != nil {
		return err
	}
	defer zlibWriter.Close()
	zlibWriter.Write(input)
	sc.ContractFile = in.Bytes()
	
	fmt.Printf("第二个函数: after compress %v\n", input)
	return err
}
  • 原始数据[]byte before compresss : [50 57 48 56 50 51 66 57 48 49 50 52 50 49 48 57 56 51 50 48 49]

    • 利用第一个函数压缩: after compress [120 218 50 178 52 176 48 50 118 178 52 48 52 50 49 50 52 176 180 48 54 50 48 4 4 0 0 255 255 47 134 4 69]
    • 利用第二个函数压缩: after compress [120 218]
  • 因为这里defer最后才调用,io.copy的时候就会找不到EOF,所以在解压的时候就会报错。

posted on 2017-04-27 15:36  逄美丽守护神  阅读(100)  评论(0)    收藏  举报

导航