2012-04-15 7 views
11

क्या zlib में deflate() और compress() कार्यों के बीच मतभेद रहे हैं?zlib: के बीच `deflate` और` compress` कार्य मतभेद

मैं ऑनलाइन उदाहरणों के माध्यम से देखा है और कुछ का इस्तेमाल किया हवा निकालना जबकि दूसरों को संपीड़ित इस्तेमाल किया।

मैं कैसे तय करना चाहिए जो स्थिति मैं एक दूसरे के ऊपर का प्रयोग करेंगे?

उत्तर

44

compress() एक कॉल में डेटा संपीड़ित करने के लिए इस्तेमाल किया, और हमेशा zlib प्रारूप है, जो एक दो बाइट हैडर और एक चार बाइट जांच मान ट्रेलर के साथ डेटा हवा निकालना को संपीड़ित करता है। compress() स्वयं ही उपयोग किया जाता है।

deflate() एक समय में डेटा एक हिस्सा संपीड़ित करने के लिए इस तरह के gzip के रूप में अन्य स्वरूपों के लिए संपीड़ित करने के लिए प्रयोग किया जाता है, और/या -wrapped या कच्चे, और इस तरह स्मृति के स्तर और संपीड़न रणनीति के रूप में अन्य विकल्प, के साथ।

यदि आप एक ही समय में सभी डेटा उपलब्ध हैं और परिणाम को पकड़ने के लिए पर्याप्त स्मृति है, तो आप compress() का उपयोग करेंगे, और आप डिफ़ॉल्ट संपीड़न प्रारूप, स्मृति उपयोग और रणनीति चाहते हैं। अन्यथा, आप deflate() का उपयोग करेंगे।

Deflate() अपने आप में नहीं किया जाता है। आप deflateInit() या deflateInit2() उपयोग करने के लिए deflate() द्वारा प्रयोग किया जाता z_stream संरचना प्रारंभ करने की जरूरत है। फिर आप deflate() को संपीड़ित करने और परिणाम उपलब्ध कराने के लिए डेटा लेने के लिए एक या अधिक बार कॉल करते हैं। अंत में, deflateEnd() स्मृति संरचना में इस्तेमाल किया संसाधनों को मुक्त करने कहा जाता है। आप http://zlib.net/zlib_how.html में अधिक जानकारी के लिए zlib.h में दिया दस्तावेज़ पढ़ें और कर सकते हैं।

+21

मार्क एडलर [निश्चित रूप से इस पर अधिकार] है (http://en.wikipedia.org/wiki/Mark_Adler)। – Xenon

+0

धन्यवाद। मैंने इसे कुछ पढ़ा लेकिन इसे पहले समझ में नहीं आया। यह सिर्फ बहुत ज्यादा जानकारी थी, लेकिन मैं चला गया और यह पुन: पढ़ने गए हैं। – mma1480

+3

बढ़िया ... अब मुझे पता है कि इसे एडलर -32 क्यों कहा जाता है –

संबंधित मुद्दे