Unterschied in der Komprimierungsausgabe zwischen Golangs zlib und Pythons zlib
Um die unterschiedlichen Komprimierungsergebnisse zu beheben, die zwischen Pythons zlib und Golangs Flate beobachtet wurden, ist dies der Fall Es ist wichtig zu beachten, dass sie unterschiedliche zugrunde liegende Implementierungen verwenden.
In Python wird zlib verwendet, eine DEFLATE-basierte Bibliothek, die Daten im Zlib-Format ausgibt. Andererseits verwendet Golang flate, eine DEFLATE-Implementierung.
Ursache der Ausgabediskrepanz
Die beobachtete Diskrepanz ergibt sich aus dem fünften Byte in der Ausgabe: Pythons zlib setzt es auf 0, während Golangs Flate es auf 4 setzt. Dieser Unterschied entsteht, weil Pythons zlib so konfiguriert ist, dass der Puffer nach dem Komprimieren der ersten Zeichenfolge geleert wird, wodurch die Ausgabe effektiv abgeschnitten wird.
Um das Verhalten von Python in Golang zu replizieren, haben Entwickler kann Close() durch Flush() im Kompressor ersetzen:
<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>
Kompatibilität vs. identische Ausgabe
Es ist jedoch wichtig, dies auch nach der Anpassung zu erkennen Da die Funktion von Golang mit der von Python übereinstimmt, kann die resultierende Byte-für-Byte-Übereinstimmung nicht garantiert werden. Die Kompatibilität zwischen Komprimierungsbibliotheken ist gewährleistet, eine identische Ausgabe kann jedoch möglicherweise nicht erreicht werden.
Die Diskrepanzen ergeben sich aus den inhärenten Unterschieden in den Bibliotheksimplementierungen und den spezifischen Parametern, die während der Komprimierung verwendet werden. Daher ist es nicht ratsam, sich auf die Byte-für-Byte-Gleichheit zwischen verschiedenen Bibliotheken zu verlassen.
Das obige ist der detaillierte Inhalt vonWarum erzeugt „flate' von Golang eine andere Komprimierungsausgabe als „zlib' von Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!