गोलांग और पायथन ज़्लिब आउटपुट में अंतर को समझना
ज़्लिब संपीड़न का उपयोग करके एक स्ट्रिंग को संपीड़ित करते समय, पायथन की ज़्लिब लाइब्रेरी तुलना में एक अलग आउटपुट उत्पन्न करती है गोलांग का ज़्लिब कार्यान्वयन। विशेष रूप से, पाँचवाँ बाइट अलग है, पायथन का मान 0 है, जबकि गोलांग का मान 4 है।
अंतर का कारण
आउटपुट में असमानता उत्पन्न होती है पायथन और गो लाइब्रेरीज़ द्वारा उपयोग किए जाने वाले विभिन्न फ्लशिंग तंत्रों से। पायथन का zlib डिफ़ॉल्ट रूप से Z_FLUSH है, जो डेटा के प्रत्येक ब्लॉक को संपीड़ित करने के बाद बफर को फ्लश करता है। इसके विपरीत, गोलांग की फ़्लैट लाइब्रेरी, जो ज़्लिब को लागू करती है, डिफ़ॉल्ट रूप से Z_SYNC_FLUSH का उपयोग करती है। संपूर्ण इनपुट स्ट्रीम संसाधित होने के बाद यह व्यवहार डेटा को फ्लश करता है। गो कोड में फ्लश() के साथ बंद करें():
फंक कंप्रेस(स्रोत स्ट्रिंग) []बाइट { buf := नया(बाइट्स.बफर) w, _ := फ़्लैट.न्यूराइटर(buf, 7) w.लिखें([]बाइट(स्रोत)) w.फ्लश() वापसी buf.बाइट्स() }
बाइट्स बनाम पूर्ण स्ट्रीम
func compress(source string) []byte {
buf := new(bytes.Buffer)
w, _ := flate.NewWriter(buf, 7)
w.Write([]byte(source))
w.Flush()
return buf.Bytes()
}
बाइट-टू-बाइट मिलान की सीमाएं
विभिन्न संपीड़न पुस्तकालयों के बाइट-टू-बाइट आउटपुट की तुलना करना संपीड़ित डेटा का मिलान आम तौर पर संभव या व्यावहारिक नहीं है। संपीड़न पुस्तकालयों द्वारा उत्पादित आउटपुट संगत होने की गारंटी है, समान नहीं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3