小编eve*_*ial的帖子

golang/python zlib的区别

调试Python的zlib和golang的zlib之间的差异.为什么下面的结果不一样?

compress.go:

package main

import (
    "compress/flate"
    "bytes"
    "fmt"
)


func compress(source string) []byte {
    w, _ := flate.NewWriter(nil, 7)
    buf := new(bytes.Buffer)

    w.Reset(buf)
    w.Write([]byte(source))
    w.Close()

    return buf.Bytes()
}


func main() {
    example := "foo"
    compressed := compress(example)
    fmt.Println(compressed)
}
Run Code Online (Sandbox Code Playgroud)

compress.py:

from __future__ import print_function

import zlib


def compress(source):
    # golang zlib strips header + checksum
    compressor = zlib.compressobj(7, zlib.DEFLATED, -15)
    compressor.compress(source)
    # python zlib defaults to Z_FLUSH, but 
    # https://golang.org/pkg/compress/flate/#Writer.Flush
    # says "Flush is equivalent to Z_SYNC_FLUSH" …
Run Code Online (Sandbox Code Playgroud)

python zlib go

6
推荐指数
1
解决办法
818
查看次数

标签 统计

go ×1

python ×1

zlib ×1