यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
erlang:adler32/1
उपयोग करें
erlang:adler32/1
इसके बजाय
erlang:adler32/1
।
Erlang 21
zlib

zlib
मॉड्यूल
zlib
मॉड्यूल सारांश
zlib संपीड़न इंटरफ़ेस।
विवरण
यह मॉड्यूल zlib लाइब्रेरी (
www.zlib.net
) के लिए एक एपीआई प्रदान करता है।
इसका उपयोग डेटा को संपीड़ित और विघटित करने के लिए किया जाता है।
डेटा प्रारूप
RFC 1950
,
RFC 1951
और
RFC 1952
द्वारा वर्णित है।
एक विशिष्ट (संपीड़ित) उपयोग इस प्रकार है:
Z = zlib:open(), ok = zlib:deflateInit(Z,default), Compress = fun(end_of_data, _Cont) -> []; (Data, Cont) -> [zlib:deflate(Z, Data)|Cont(Read(),Cont)] end, Compressed = Compress(Read(),Compress), Last = zlib:deflate(Z, [], finish), ok = zlib:deflateEnd(Z), zlib:close(Z), list_to_binary([Compressed|Last])
सभी फ़ंक्शन त्रुटियों में,
{'EXIT',{Reason,Backtrace}}
को फेंका जा सकता है, जहां
Reason
त्रुटि का वर्णन करता है।
विशिष्ट
Reasons
:
-
badarg
- बुरा तर्क।
-
not_initialized
-
स्ट्रीम को इनिशियलाइज़ नहीं किया गया है, जैसे।
अगर
inflateInit/1
को कॉल करने से पहलेinflateInit/1
नहीं गया था। -
not_on_controlling_process
-
धारा का उपयोग एक प्रक्रिया द्वारा किया गया था जो इसे नियंत्रित नहीं करता है।
यदि आपको किसी भिन्न प्रक्रिया में एक स्ट्रीम स्थानांतरित करने की आवश्यकता है, तो
set_controlling_process/2
उपयोग करें। -
data_error
- डेटा में त्रुटियाँ हैं।
-
stream_error
- असंगत धारा की अवस्था।
-
{need_dictionary,Adler32}
-
inflate/2
देखें।
जानकारी का प्रकार
zstream() = reference()
एक zlib धारा,
open/0
देखें।
zlevel() =
none | default | best_compression | best_speed | 0..9
zflush() = none | sync | full | finish
zmemlevel() = 1..9
zmethod() = deflated
zstrategy() = default | filtered | huffman_only | rle
zwindowbits() = -15..-8 | 8..47
आम तौर पर रेंज में
-15..-8 | 8..15
-15..-8 | 8..15
।
निर्यात
प्रकार
Data
लिए एडलर -32 चेकसम की गणना करता है।
प्रकार
Data
लिए चल रहे एडलर -32 चेकसम को अपडेट करता है।
यदि
Data
खाली बाइनरी या खाली आयोलिस्ट है, तो यह फ़ंक्शन चेकसम के लिए आवश्यक प्रारंभिक मान लौटाता है।
उदाहरण:
Crc = lists:foldl(fun(Data,Crc0) -> zlib:adler32(Z, Crc0, Data), end, zlib:adler32(Z,<< >>), Datas)
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
erlang:adler32/2
उपयोग करें
erlang:adler32/2
इसके बजाय
erlang:adler32/2
।
प्रकार
दो एडलर -32 चेकसम को एक में मिला देता है।
दो बायनेरी या आईओलिस्ट्स के लिए,
Size1
और
Size2
Size1
और
Size2
के साथ, एडलर -32 चेकसम एडलर
Adler1
और एडलर 2 के साथ।
यह फ़ंक्शन केवल
Adler1
,
Adler2
और
Size2
आवश्यकता के लिए
[Data1,Data2]
का
Adler
चेकसम
Size2
।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
erlang:adler32_combine/3
उपयोग करें
erlang:adler32_combine/3
इसके बजाय
erlang:adler32_combine/3
।
प्रकार
Z
द्वारा संदर्भित धारा को बंद करता है।
प्रकार
Zlib हेडर और चेकसम के साथ डेटा को संपीड़ित करता है।
प्रकार
वर्तमान गणना सीआरसी चेकसम प्राप्त करता है।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
erlang:crc32/1
उपयोग करें
erlang:crc32/1
इसके बजाय असम्पीडित डेटा पर
erlang:crc32/1
।
प्रकार
Data
लिए सीआरसी चेकसम की गणना करता है।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
उपयोग
erlang:crc32/1
बजाय।
प्रकार
Data
लिए एक रनिंग सीआरसी चेकसम अपडेट करता है।
यदि
Data
खाली बाइनरी या खाली आईओलिस्ट है, तो यह फ़ंक्शन सीआरसी के लिए आवश्यक प्रारंभिक मान लौटाता है।
उदाहरण:
Crc = lists:foldl(fun(Data,Crc0) -> zlib:crc32(Z, Crc0, Data), end, zlib:crc32(Z,<< >>), Datas)
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
उपयोग
erlang:crc32/2
बजाय।
प्रकार
दो CRC चेकसम को एक में जोड़ता है।
दो बायनेरिज़ या आईओलिस्ट्स के लिए, डेटा 1 और
Data2
और
Data2
के आकार के साथ, सीआरसी चेकसम सीआरसी
CRC1
और सीआरसी 2 के साथ।
यह फ़ंक्शन
CRC
चेकसम
[Data1,Data2]
CRC1
, केवल
CRC1
,
CRC2
और
Size2
आवश्यकता होती है।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
उपयोग
erlang:crc32_combine/3
बजाय।
प्रकार
अपस्फीति के रूप में भी
deflate(Z, Data, none)
।
प्रकार
जितना संभव हो उतना डेटा संपीड़ित करता है, और इनपुट बफर खाली होने पर बंद हो जाता है। जब फ्लश के लिए मजबूर किया जाए तो यह कुछ आउटपुट लेटेंसी (बिना किसी आउटपुट को पढ़े इनपुट) पेश कर सकता है।
यदि
Flush
को
sync
करने के लिए सेट किया गया है, तो सभी लंबित आउटपुट आउटपुट बफर में फ्लश हो जाते हैं और आउटपुट को बाइट की सीमा पर संरेखित किया जाता है, ताकि डीकंप्रेसर को अब तक के सभी इनपुट डेटा उपलब्ध हो सकें।
निस्तब्धता कुछ संपीड़न एल्गोरिदम के लिए संपीड़न को नीचा दिखा सकती है;
इस प्रकार, आवश्यक होने पर ही इसका उपयोग करें।
यदि
Flush
को
full
सेट किया गया है, तो सभी आउटपुट को
sync
साथ फ्लश किया जाता है, और संपीड़न स्थिति को रीसेट किया जाता है, ताकि विघटन इस बिंदु से फिर से शुरू हो सके यदि पिछले संपीड़ित डेटा क्षतिग्रस्त हो गया है या यदि यादृच्छिक एक्सेस वांछित है।
full
का उपयोग करना अक्सर संपीड़न को गंभीरता से कम कर सकता है।
यदि
Flush
finish
करने के लिए सेट किया गया है, तो लंबित इनपुट पर कार्रवाई की जाती है, लंबित आउटपुट को फ्लश किया जाता है, और
deflate/3
रिटर्न
deflate/3
जाता है।
बाद में धारा पर केवल संभव संचालन
deflateReset/1
या
deflateEnd/1
।
Flush
को
deflateInit
तुरंत बाद
finish
करने के लिए सेट किया जा सकता है यदि सभी संपीड़न एक चरण में किया जाना है।
उदाहरण:
zlib:deflateInit(Z), B1 = zlib:deflate(Z,Data), B2 = zlib:deflate(Z,<< >>,finish), zlib:deflateEnd(Z), list_to_binary([B1,B2])
प्रकार
समाप्त सत्र समाप्त होता है और उपयोग किए गए सभी डेटा को साफ करता है।
ध्यान दें कि यह फ़ंक्शन एक
data_error
अपवाद को फेंकता है यदि अंतिम कॉल
data_error
deflate/3
को
Flush
सेट के साथ
finish
करने के लिए नहीं बुलाया गया था।
प्रकार
zlib:deflateInit(Z, default)
समान
zlib:deflateInit(Z, default)
।
प्रकार
संपीड़न के लिए एक zlib स्ट्रीम आरंभ करता है।
Level
जाने वाले संपीड़न स्तर को तय करता है:
-
0 (
none
), कोई संपीड़न नहीं देता है -
1 (
best_speed
) सर्वश्रेष्ठ गति देता है -
9 (
best_compression
) सर्वश्रेष्ठ संपीड़न देता है
ठीक
प्रकार
संपीड़न के लिए एक zlib स्ट्रीम आरंभ करता है।
-
Level
-
उपयोग करने के लिए संपीड़न स्तर:
-
0 (
none
), कोई संपीड़न नहीं देता है -
1 (
best_speed
) सर्वश्रेष्ठ गति देता है -
9 (
best_compression
) सर्वश्रेष्ठ संपीड़न देता है
-
0 (
-
Method
-
उपयोग करने के लिए संपीड़न विधि, वर्तमान में एकमात्र समर्थित विधि
deflated
। -
WindowBits
-
खिड़की के आकार (इतिहास बफर के आकार) का आधार दो लघुगणक। यह 15. के माध्यम से सीमा 8 में होना है। बड़े मूल्यों में मेमोरी उपयोग की कीमत पर बेहतर संपीड़न होता है। यदि
deflateInit/2
का उपयोग किया जाता है तोdeflateInit/2
15 एक नकारात्मकWindowBits
मान स्ट्रीम से zlib हैडर (और चेकसम) को दबा देता है। ध्यान दें कि zlib स्रोत केवल एक अनिर्दिष्ट सुविधा के रूप में इसका उल्लेख करता है।चेतावनीअंतर्निहित zlib लाइब्रेरी में एक ज्ञात बग के कारण,
WindowBits
मान 8 और -8 अपेक्षित रूप से काम नहीं करता है। 1.2.9 मानों से पहले zlib संस्करणों में 8 और -8 स्वचालित रूप से 9 और -9 में बदल जाते हैं। Zlib संस्करण से 1.2.9 मूल्य -8 कोzlib:deflateInit/6
कारण अस्वीकार कर दिया गयाzlib:deflateInit/6
को विफल करने के लिए (8 अभी भी 9 में बदल गया है)। यह भी संभव है कि भविष्य के संस्करण zlib इस बग को ठीक कर सकते हैं और 8 और -8 को स्वीकार करना शुरू कर सकते हैं।निष्कर्ष: मानों से बचें 8 और -8 जब तक आप नहीं जानते कि आपका zlib संस्करण उनका समर्थन करता है।
-
MemLevel
-
निर्दिष्ट करता है कि आंतरिक संपीड़न स्थिति के लिए कितनी मेमोरी आवंटित की जानी है:
MemLevel
= 1 न्यूनतम मेमोरी का उपयोग करता है, लेकिन धीमा है और संपीड़न अनुपात को कम करता है;MemLevel
= 9 अधिकतम गति के लिए अधिकतम मेमोरी का उपयोग करता है। 8 से चूक। -
Strategy
-
संपीड़न एल्गोरिथ्म ट्यून। निम्नलिखित मूल्यों का उपयोग करें:
-
सामान्य डेटा के लिए
default
-
filtered
द्वारा उत्पादित डेटा (या पूर्वसूचक) के लिए फ़िल्टर किया गया -
huffman_only
केवल Huffman एन्कोडिंग को बलhuffman_only
लिए (कोई स्ट्रिंग मिलान नहीं) -
मैच दूरी को एक तक सीमित करने के लिए
rle
(रन-लंबाई एन्कोडिंग)
फ़िल्टर किए गए डेटा में कुछ हद तक यादृच्छिक वितरण के साथ अधिकतर छोटे मूल्य होते हैं। इस मामले में, संपीड़न एल्गोरिथ्म उन्हें बेहतर संपीड़ित करने के लिए तैयार है।
filtered
का प्रभाव अधिक हफ़मैन कोडिंग और कम स्ट्रिंग मिलान के लिए मजबूर करना है; यहdefault
औरhuffman_only
बीच कुछ मध्यवर्ती है।rle
कोrle
रूप में लगभग तेज़ होने के लिए डिज़ाइन किया गया है, लेकिन PNG छवि डेटा के लिए बेहतर संपीड़न देता है।Strategy
केवल संपीड़न अनुपात को प्रभावित करती है, लेकिन संपीड़ित आउटपुट की शुद्धता नहीं है, भले ही इसे उचित रूप से सेट न किया गया हो। -
सामान्य डेटा के लिए
प्रकार
गतिशील रूप से संपीड़न स्तर और संपीड़न रणनीति को अद्यतन करता है।
Level
और
Strategy
की व्याख्या
deflateInit/6
।
इसका उपयोग संपीड़न और इनपुट डेटा की सीधी प्रतिलिपि के बीच स्विच करने के लिए किया जा सकता है, या एक अलग तरह की इनपुट डेटा पर स्विच करने के लिए एक अलग रणनीति की आवश्यकता होती है।
यदि संपीड़न स्तर को बदल दिया जाता है, तो अब तक उपलब्ध इनपुट पुराने स्तर के साथ संकुचित है (और फ्लश किया जा सकता है);
नया स्तर केवल
deflate/3
के अगले कॉल पर प्रभावी होता है।
deflateParams
की कॉल से पहले, धारा स्थिति को
deflateParams
deflate/3
कॉल के रूप में सेट किया जाना चाहिए, क्योंकि वर्तमान में उपलब्ध इनपुट को संपीड़ित और फ्लश करना पड़ सकता है।
प्रकार
deflateEnd/1
समतुल्य और उसके बाद
deflateInit
, लेकिन सभी आंतरिक संपीड़न स्थिति को मुक्त और पुनः
deflateInit
नहीं करता है।
धारा एक ही संपीड़न स्तर और किसी भी अन्य विशेषताओं को बनाए रखती है।
प्रकार
किसी भी संपीड़ित उत्पादन का उत्पादन किए बिना निर्दिष्ट बाइट अनुक्रम से संपीड़न शब्दकोश को प्रारंभ करता है।
deflateReset/1
किसी भी कॉल से पहले इस फ़ंक्शन को
deflateInit
या
deflateReset/1
तुरंत बाद बुलाया जाना चाहिए।
कंप्रेसर और डीकंप्रेसर को एक ही शब्दकोश का उपयोग करना होगा (देखें
inflateSetDictionary/2
)।
शब्दकोश का एडलर चेकसम वापस आ गया है।
प्रकार
मध्यवर्ती बफर का आकार प्राप्त करता है।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
प्रकार
Gz हेडर और चेकसम के साथ डेटा को अनकम्प्रेस्ड करता है।
प्रकार
जीजी हेडर और चेकसम के साथ डेटा को संपीड़ित करता है।
प्रकार
inflate(Z, Data, [])
बराबर
inflate(Z, Data, [])
प्रकार
जितना संभव हो उतना डेटा घटाएं। यह कुछ आउटपुट लेटेंसी (किसी आउटपुट के उत्पादन के बिना इनपुट पढ़ना) को पेश कर सकता है।
वर्तमान में एकमात्र उपलब्ध विकल्प
{exception_on_need_dict,boolean()}
जो यह नियंत्रित करता है कि फ़ंक्शन को एक अपवाद फेंकना चाहिए जब एक पूर्व निर्धारित शब्दकोश को विघटन के लिए आवश्यक है।
जब इसे गलत पर सेट किया जाता है, तो इसके बजाय एक
need_dictionary
टपल लौटाया जाएगा।
विवरण के लिए
inflateSetDictionary/2
देखें।
यह विकल्प पश्चगामी अनुकूलता के लिए
true
को परिभाषित करता है, लेकिन हम भविष्य के रिलीज़ में अपवाद व्यवहार को हटाने का इरादा रखते हैं।
नए कोड जिन्हें मैन्युअल रूप से शब्दकोशों को संभालने की आवश्यकता है उन्हें हमेशा
{exception_on_need_dict,false}
निर्दिष्ट करना चाहिए।
प्रकार
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
इसके बजाय
safeInflate/2
उपयोग करें।
असंपीड़ित डेटा का अगला हिस्सा पढ़ता है,
inflateChunk/2
द्वारा आरंभ किया
inflateChunk/2
।
इस फ़ंक्शन को बार-बार कहा जाना है, जबकि यह
{more, Decompressed}
लौटाता है।
प्रकार
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
इसके बजाय
safeInflate/2
उपयोग करें।
setBufSize/2
तरह, लेकिन इससे अधिक डेटा
setBufSize/2
होता है जो
setBufSize/2
माध्यम से कॉन्फ़िगर किए गए बफर में फिट होगा।
उच्च संपीड़न अनुपात के साथ एक धारा को विघटित करने पर उपयोगी होता है, जैसे कि संपीड़ित इनपुट की एक छोटी राशि 1000 गुना तक बढ़ सकती है।
यह फ़ंक्शन
{more, Decompressed}
लौटता है, जब अधिक आउटपुट उपलब्ध होता है, और इसे पढ़ने के लिए
inflateChunk/1
का उपयोग किया जाना है।
यह फ़ंक्शन कुछ आउटपुट विलंबता (किसी भी आउटपुट का उत्पादन किए बिना इनपुट पढ़ना) को पेश कर सकता है।
यदि एक पर्चे शब्दकोश आगे विघटन के लिए आवश्यक है, तो एक अपवाद को फेंक दिया जाएगा।
विवरण के लिए
inflateSetDictionary/2
देखें।
उदाहरण:
walk(Compressed, Handler) -> Z = zlib:open(), zlib:inflateInit(Z), % Limit single uncompressed chunk size to 512kb zlib:setBufSize(Z, 512 * 1024), loop(Z, Handler, zlib:inflateChunk(Z, Compressed)), zlib:inflateEnd(Z), zlib:close(Z). loop(Z, Handler, {more, Uncompressed}) -> Handler(Uncompressed), loop(Z, Handler, zlib:inflateChunk(Z)); loop(Z, Handler, Uncompressed) -> Handler(Uncompressed).
प्रकार
फुलाते सत्र को समाप्त करता है और उपयोग किए गए सभी डेटा को साफ करता है।
ध्यान दें कि यदि स्ट्रीम का कोई अंत नहीं मिला था, तो यह फ़ंक्शन
data_error
अपवाद को फेंकता है (जिसका अर्थ है कि सभी डेटा असम्पीडित नहीं हैं)।
प्रकार
वर्तमान में स्ट्रीम द्वारा उपयोग किए जाने वाले विघटन शब्दकोश को वापस करता है।
इस फ़ंक्शन को
inflateInit/1
और
inflateEnd
बीच कहा जाना चाहिए।
केवल तभी समर्थित है जब ERTS को zlib> = 1.2.8 से संकलित किया गया था।
प्रकार
विघटन के लिए एक ज़्लिब स्ट्रीम शुरू करता है।
प्रकार
Zlib स्ट्रीम पर एक विघटन सत्र शुरू करता है।
WindowBits
अधिकतम विंडो आकार (इतिहास बफर का आकार) का आधार दो लघुगणक है।
यह 5 से 8 के बीच की सीमा में होना है। 15 से डिफ़ॉल्ट अगर
inflateInit/1
का उपयोग किया जाता है।
यदि एक बड़े विंडो आकार के साथ एक संपीड़ित धारा इनपुट के रूप में निर्दिष्ट की जाती है, तो
data_error
अपवाद को
inflate/2
फेंकता है।
एक नकारात्मक
WindowBits
मान zlib स्ट्रीम से zlib हेडर (और चेकसम) को अनदेखा करता है।
ध्यान दें कि zlib स्रोत केवल एक अनिर्दिष्ट सुविधा के रूप में इसका उल्लेख करता है।
प्रकार
inflateEnd
बराबर और उसके बाद
inflateEnd
बराबर है, लेकिन सभी आंतरिक अपघटन अवस्था को मुक्त और पुनः उत्पन्न नहीं करता है।
धारा उन विशेषताओं को बनाए
inflateInit/1,2
जो
inflateInit/1,2
द्वारा सेट की जा सकती
inflateInit/1,2
।
प्रकार
निर्दिष्ट असम्पीडित बाइट अनुक्रम से विघटन शब्दकोश को प्रारंभ करता है।
इस फ़ंक्शन को एक फुलाए हुए ऑपरेशन की प्रतिक्रिया के रूप में कहा जाना चाहिए (जैसे।
safeInflate/2
)
{need_dictionary,Adler,Output}
या वापस किए गए कार्यों के मामले में,
{'EXIT',{{need_dictionary,Adler},_StackTrace}}
अपवाद।
कंप्रेसर द्वारा चुने गए शब्दकोश को एडलर मान से लौटाया जा सकता है या कॉल द्वारा फुलाया गया कार्य।
कंप्रेसर और डीकंप्रेसर को एक ही शब्दकोश का उपयोग करना होगा (देखें
deflateSetDictionary/2
)।
डिक्शनरी सेट करने के बाद इनफ्लो ऑपरेशन को नए इनपुट के बिना वापस लेना चाहिए।
उदाहरण:
deprecated_unpack(Z, Compressed, Dict) -> case catch zlib:inflate(Z, Compressed) of {'EXIT',{{need_dictionary,_DictID},_}} -> ok = zlib:inflateSetDictionary(Z, Dict), Uncompressed = zlib:inflate(Z, []); Uncompressed -> Uncompressed end. new_unpack(Z, Compressed, Dict) -> case zlib:inflate(Z, Compressed, [{exception_on_need_dict, false}]) of {need_dictionary, _DictId, Output} -> ok = zlib:inflateSetDictionary(Z, Dict), [Output | zlib:inflate(Z, [])]; Uncompressed -> Uncompressed end.
zstream()
एक zlib धारा खोलता है।
प्रकार
inflate/2
, लेकिन एक बार लागू होने के बाद यह एक छोटे कार्यान्वयन-परिभाषित सीमा से आगे बढ़ जाता है।
यह तब उपयोगी होता है जब अविश्वासित इनपुट को विघटित किया जा सकता है जो सिस्टम के मेमोरी से बाहर चलने तक विस्तार करने के लिए दुर्भावनापूर्ण रूप से तैयार किया जा सकता है।
यह फ़ंक्शन देता है
{continue | finished, Output}
{continue | finished, Output}
, जहां आउटपुट वह डेटा है जो इस कॉल में विघटित था।
यदि वांछित है तो प्रत्येक इनपुट पर नए इनपुट को कतारबद्ध किया जा सकता है, और सभी पंक्तिबद्ध डेटा विघटित हो जाने पर फ़ंक्शन
{finished, Output}
वापस आ जाएगा।
यह फ़ंक्शन कुछ आउटपुट विलंबता (किसी भी आउटपुट का उत्पादन किए बिना इनपुट पढ़ना) को पेश कर सकता है।
यदि आगे विघटन के लिए एक पूर्व निर्धारित शब्दकोश की आवश्यकता होती है, तो यह फ़ंक्शन एक
need_dictionary
tuple देता है।
विवरण के लिए
inflateSetDictionary/2
) देखें।
उदाहरण:
walk(Compressed, Handler) -> Z = zlib:open(), zlib:inflateInit(Z), loop(Z, Handler, zlib:safeInflate(Z, Compressed)), zlib:inflateEnd(Z), zlib:close(Z). loop(Z, Handler, {continue, Output}) -> Handler(Output), loop(Z, Handler, zlib:safeInflate(Z, [])); loop(Z, Handler, {finished, Output}) -> Handler(Output).
प्रकार
मध्यवर्ती बफर आकार सेट करता है।
यह फ़ंक्शन हटा दिया गया है और भविष्य में रिलीज़ में हटा दिया जाएगा।
प्रकार
Z
की नियंत्रण प्रक्रिया को
Pid
, जो एक स्थानीय प्रक्रिया होनी चाहिए।
प्रकार
Zlib हेडर और चेकसम के साथ डेटा को अनकम्प्रेस करता है।
प्रकार
Zlib हेडर और चेकसम के बिना डेटा को अनलॉक करता है।
प्रकार
Zlib हेडर और चेकसम के बिना डेटा को संपीड़ित करता है।