Rumah > Artikel > pembangunan bahagian belakang > Mengapakah pakej flate Go menghasilkan output termampat yang berbeza berbanding perpustakaan zlib Python?
Percanggahan Golang dan Python zlib
Apabila membandingkan hasil pemampatan rentetan menggunakan perpustakaan zlib Python dan pakej flate Go, perbezaan timbul. Dalam soalan ini, versi Python menjana output dengan bait sifar tambahan, manakala versi Golang tidak.
Percanggahan berpunca daripada pendekatan berbeza yang diambil oleh kedua-dua perpustakaan. Zlib Python memampatkan data kepada format zlib, yang termasuk pengepala dan checksum. Sebaliknya, Go's flate secara langsung melaksanakan algoritma DEFLATE, menghasilkan strim DEFLATE mentah tanpa pengepala atau checksum.
Untuk mendapatkan output yang sama daripada Go, ubah suai kod untuk mengepam penimbal secara eksplisit selepas menulis data yang dimampatkan:
<code class="go">func compress(source string) []byte { buf := new(bytes.Buffer) w, _ := flate.NewWriter(buf, 7) w.Write([]byte(source)) w.Flush() return buf.Bytes() }</code>
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa output pustaka mampatan yang berbeza mungkin tidak sama bait-untuk-bait. Walaupun mereka menyasarkan keserasian, butiran pelaksanaan khusus boleh membawa kepada variasi.
Atas ialah kandungan terperinci Mengapakah pakej flate Go menghasilkan output termampat yang berbeza berbanding perpustakaan zlib Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!