کتابخانه‌ی استاندارد · کدگذاری و داده

فشرده سازی compress

بافر بایت، روش‌های فشرده‌سازی از RLE تا DEFLATE، جی‌زیپ و چک‌جمع‌ها.

واردسازی فشرده سازی

این بسته پایه‌ی کار با داده‌ی دودویی در سلام است: بافر بایت و خواننده بایت را بسته‌های دیگری مثل دودویی، بایگانی و مسج‌پک هم به کار می‌برند.

برای فشرده‌سازی، اگر داده باید با برنامه‌های دیگر خوانده شود، جی‌زیپ را به کار ببرید. روش‌های دیگر بیشتر برای یادگیری و آزمایش‌اند و قالب خروجی‌شان مخصوص همین بسته است. نمونه‌ها نشان می‌دهند که برای داده‌ی کوچک، سربار هافمن و DEFLATE از خود داده بیشتر می‌شود.

گونه‌ها

روش Method

جداشمار روش
روش فشرده‌سازی، به شکل شمارشی.
نامانگلیسیگونهتوضیح
NoneNoneبدون فشرده‌سازی.
RLERLEکدگذاری طول اجرا.
HuffmanHuffmanهافمن.
LZ77LZ77LZ77.
LZWLZWLZW.
DeflateDeflateLZ77 و هافمن.
BWTBWTباروز ویلر.
compress-Methods.salam
واردسازی فشرده سازی

روال ریشه:
    متن := "آبآبآبآبآبآب سلام سلام سلام سلام سلام سلام سلام سلام"
    ب := فشرده سازی.بافر از رشته(متن)
    هر روش در [فشرده سازی.روش هیچ، فشرده سازی.روش آر ال ای، فشرده سازی.روش هافمن، فشرده سازی.روش الزد۷۷، فشرده سازی.روش ال زد دبلیو، فشرده سازی.روش دیفلیت، فشرده سازی.روش باروز ویلر]:
        ناپایا ف := فشرده سازی.فشرده سازی بافر(روش، ب)
        ناپایا ب۲ := فشرده سازی.کدگشایی بافر(روش، ف)
        سرچاپ روش، فشرده سازی.طول بافر(ف)، فشرده سازی.برابری بافر(ب، ب۲)
        فشرده سازی.آزادسازی بافر(ف)
        فشرده سازی.آزادسازی بافر(ب۲)
    پایان
    ناپایا بهترین := ۰
    ف := فشرده سازی.بهترین فشرده سازی(ب.data، ب.len، بهترین)
    سرچاپ بهترین، فشرده سازی.نسبت(ف.len، ب.len) < ۱.۰
    ر := فشرده سازی.فشرده سازی رشته(فشرده سازی.روش دیفلیت، "aaaaaaaaaa")
    ب۳ := فشرده سازی.کدگشایی(فشرده سازی.روش دیفلیت، ر.data، ر.len)
    سرچاپ فشرده سازی.بافر به رشته(ب۳)
    ب۴ := فشرده سازی.فشرده سازی(فشرده سازی.روش آر ال ای، ب.data، ب.len)
    سرچاپ فشرده سازی.طول بافر(ب۴) > ۰، فشرده سازی.روش.هافمن
    سرچاپ فشرده سازی.طول بافر(فشرده سازی.کدگشایی طول اجرا(فشرده سازی.فشرده سازی طول اجرا(ب.data، ب.len).data، فشرده سازی.فشرده سازی طول اجرا(ب.data، ب.len).len)) == ب.len
    ه := فشرده سازی.فشرده سازی هافمن(ب.data، ب.len)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی هافمن(ه.data، ه.len)، ب)
    ل := فشرده سازی.فشرده سازی الزد۷۷(ب.data، ب.len)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی الزد۷۷(ل.data، ل.len)، ب)
    و۲ := فشرده سازی.فشرده سازی ال زد دبلیو(ب.data، ب.len)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی ال زد دبلیو(و۲.data، و۲.len)، ب)
    ب۵ := فشرده سازی.فشرده سازی باروز ویلر(ب.data، ب.len)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی باروز ویلر(ب۵.data، ب۵.len)، ب)
    ناپایا اصلی := ۰
    ت := فشرده سازی.تبدیل باروز ویلر(ب.data، ۶، اصلی)
    سرچاپ اصلی، فشرده سازی.بافر به رشته(فشرده سازی.معکوس باروز ویلر(ت.data، ت.len، اصلی)) == "آبآ"
    م := فشرده سازی.کدگذاری انتقال به جلو(ب)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی انتقال به جلو(م)، ب)
پایان
خروجی0 100 true 1 101 true 2 297 true 3 32 true 4 54 true 5 548 true 6 286 true 3 true aaaaaaaaaa true 2 true true true true true 4 true true

بافر بایت ByteBuf

ساختار بافر بایت
بافر بایت: آرایه‌ای از بایت که خودش بزرگ می‌شود. بیشتر بسته‌های این گروه داده‌ی دودویی را در آن می‌دهند و می‌گیرند.
نامانگلیسیگونهتوضیح
datadataتهی*نشانی حافظه‌ی بایت‌ها.
lenlenصحیح = 0تعداد بایت‌ها.
capcapصحیح = 0ظرفیت.
compress-Buffer.salam
واردسازی فشرده سازی

روال ریشه:
    ناپایا ب := فشرده سازی.بافر بایت جدید با ظرفیت(۱۶)
    فشرده سازی.افزودن بایت(ب، ۷۲)
    فشرده سازی.افزودن بایت(ب، ۱۰۵)
    ناپایا دیگر := فشرده سازی.بافر از رشته("!!")
    فشرده سازی.افزودن بافر(ب، دیگر)
    فشرده سازی.افزودن بایت‌ها(ب، دیگر.data، ۱)
    فشرده سازی.افزودن عدد۳۲(ب، ۱۰)
    سرچاپ فشرده سازی.طول بافر(ب)، فشرده سازی.دریافت بایت(ب، ۰)، فشرده سازی.بافر به پایه۶۴(ب)
    فشرده سازی.تنظیم بایت(ب، ۰، ۱۰۴)
    ک := فشرده سازی.کپی بافر(ب)
    سرچاپ فشرده سازی.برابری بافر(ب، ک)، فشرده سازی.بافر به رشته(فشرده سازی.بافر از رشته("سلام"))
    ناپایا خ := فشرده سازی.خواننده از بافر(ب)
    سرچاپ فشرده سازی.باقیمانده(خ)، فشرده سازی.خواندن بایت(خ)، فشرده سازی.خواندن بایت(خ)
    سه := فشرده سازی.خواندن بایت‌ها(خ، ۳)
    سرچاپ فشرده سازی.طول بافر(سه)، فشرده سازی.خواندن عدد۳۲(خ)، فشرده سازی.باقیمانده(خ)، خ.bad
    _ := فشرده سازی.خواندن بایت(خ)
    سرچاپ خ.bad
    ناپایا خ۲ := فشرده سازی.خواننده بایت جدید(ک.data، ۲)
    سرچاپ فشرده سازی.خواندن بایت(خ۲)
    فشرده سازی.بازنشانی بافر(ب)
    سرچاپ فشرده سازی.طول بافر(ب)
    فشرده سازی.آزادسازی بافر(ب)
    فشرده سازی.آزادسازی بافر(ک)
    فشرده سازی.آزادسازی بافر(دیگر)
پایان
خروجی9 72 SGkhISEAAAAK true سلام 9 104 105 3 10 0 false true 104 0

خواننده بایت ByteReader

ساختار خواننده بایت
خواننده‌ی پشت‌سرهم بایت‌ها از یک تکه حافظه.
نامانگلیسیگونهتوضیح
datadataتهی*نشانی داده.
lenlenصحیح = 0طول داده.
posposصحیح = 0جای فعلی.
badbadمنطقی = نادرستخواندن از انتهای داده گذشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

نویسنده بیت BitWriter

ساختار نویسنده بیت
نویسنده‌ی بیت‌ها؛ بیت‌ها را از کم‌ارزش‌ترین بیت هر بایت پر می‌کند.
نامانگلیسیگونهتوضیح
bufbufبافر بایتبایت‌های نوشته‌شده.
accaccصحیح = 0بیت‌های منتظر.
nbitsnbitsصحیح = 0تعداد بیت‌های منتظر.
compress-Bits.salam
واردسازی فشرده سازی

روال ریشه:
    ناپایا ن := فشرده سازی.نویسنده بیت جدید()
    فشرده سازی.نوشتن بیت(ن، ۱)
    فشرده سازی.نوشتن بیت‌ها(ن، ۵، ۳)
    فشرده سازی.نوشتن بیت‌ها(ن، ۲۵۵، ۸)
    فشرده سازی.تخلیه بیت(ن)
    سرچاپ فشرده سازی.طول نویسنده بیت(ن)
    ناپایا خ := فشرده سازی.خواننده بیت از بافر(ن.buf)
    سرچاپ فشرده سازی.خواندن بیت(خ)، فشرده سازی.خواندن بیت‌ها(خ، ۳)، فشرده سازی.خواندن بیت‌ها(خ، ۸)
    ناپایا خ۲ := فشرده سازی.خواننده بیت جدید(ن.buf.data، ۱)
    سرچاپ فشرده سازی.خواندن بیت‌ها(خ۲، ۴)
    فشرده سازی.آزادسازی نویسنده بیت(ن)
پایان
خروجی2 1 5 255 11

خواننده بیت BitReader

ساختار خواننده بیت
خواننده‌ی بیت‌ها با همان ترتیب.
نامانگلیسیگونهتوضیح
datadataتهی*داده.
lenlenصحیح = 0طول داده.
posposصحیح = 0جای بایت فعلی.
accaccصحیح = 0بیت‌های خوانده‌شده.
nbitsnbitsصحیح = 0تعداد بیت‌های آماده.
badbadمنطقی = نادرستخواندن از انتهای داده گذشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

پایاها و متغیرها

شماره‌ی روش‌ها Method…

همان روش‌های شمارشی روش، به شکل عدد؛ برای فشرده سازی و کدگشایی.
نامانگلیسیمقدار
روش هیچMethodNone0
روش آر ال ایMethodRLE1
روش هافمنMethodHuffman2
روش الزد۷۷MethodLZ773
روش ال زد دبلیوMethodLZW4
روش دیفلیتMethodDeflate5
روش باروز ویلرMethodBWT6

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

روال‌ها

فشرده سازی ال زد دبلیو LZWCompress

روال فشرده سازی ال زد دبلیو(p: تهی*، n: صحیح): بافر بایت
فشرده‌سازی LZW، با فرهنگ لغتی که حین کار ساخته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی ال زد دبلیو LZWDecompress

روال کدگشایی ال زد دبلیو(p: تهی*، n: صحیح): بافر بایت
داده‌ی LZW را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی طول اجرا RLECompress

روال فشرده سازی طول اجرا(p: تهی*، n: صحیح): بافر بایت
کدگذاری طول اجرا: تکرارهای پشت‌سرهم یک بایت را کوتاه می‌کند؛ برای داده‌ی پرتکرار.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی طول اجرا RLEDecompress

روال کدگشایی طول اجرا(p: تهی*، n: صحیح): بافر بایت
داده‌ی RLE را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی جی زیپ GzipCompress

روال فشرده سازی جی زیپ(p: تهی*، n: صحیح): بافر بایت
داده را به قالب جی‌زیپ (پرونده‌های .gz) فشرده می‌کند.
compress-Gzip.salam
واردسازی فشرده سازی

روال ریشه:
    متن := "سلام جی‌زیپ! سلام جی‌زیپ! سلام جی‌زیپ!"
    ج := فشرده سازی.فشرده سازی جی زیپ رشته(متن)
    سرچاپ فشرده سازی.دریافت بایت(ج، ۰)، فشرده سازی.دریافت بایت(ج، ۱)
    ناپایا خوب := نادرست
    ب := فشرده سازی.کدگشایی جی زیپ بافر(ج، خوب)
    سرچاپ خوب، فشرده سازی.بافر به رشته(ب) == متن
    ب۲ := فشرده سازی.بافر از رشته(متن)
    ج۲ := فشرده سازی.فشرده سازی جی زیپ بافر(ب۲)
    ج۳ := فشرده سازی.فشرده سازی جی زیپ(ب۲.data، ب۲.len)
    سرچاپ فشرده سازی.برابری بافر(ج۲، ج۳)
    _ := فشرده سازی.کدگشایی جی زیپ(ب۲.data، ب۲.len، خوب)
    سرچاپ خوب
    د := فشرده سازی.فشرده سازی دیفلیت(ب۲.data، ب۲.len)
    سرچاپ فشرده سازی.برابری بافر(فشرده سازی.کدگشایی دیفلیت(د.data، د.len)، ب۲)
    خام := فشرده سازی.دیفلیت خام(ب۲.data، ب۲.len)
    باز := فشرده سازی.کدگشایی دیفلیت خام(خام.data، خام.len، ب۲.len، خوب)
    سرچاپ خوب، فشرده سازی.برابری بافر(باز، ب۲)
پایان
خروجی31 139 true true true false true true true

کدگشایی جی زیپ GzipDecompress

روال کدگشایی جی زیپ(p: تهی*، n: صحیح، ok &: منطقی): بافر بایت
داده‌ی جی‌زیپ را باز می‌کند؛ اگر داده جی‌زیپ نباشد، ok نادرست می‌شود. چک‌جمع درون پرونده بررسی نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

فشرده سازی جی زیپ بافر GzipCompressBuf

روال فشرده سازی جی زیپ بافر(b: بافر بایت): بافر بایت
بافر را جی‌زیپ می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

فشرده سازی جی زیپ رشته GzipCompressStr

روال فشرده سازی جی زیپ رشته(s: رشته): بافر بایت
رشته را جی‌زیپ می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

کدگشایی جی زیپ بافر GzipDecompressBuf

روال کدگشایی جی زیپ بافر(b: بافر بایت، ok &: منطقی): بافر بایت
بافر جی‌زیپ را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

کدگشایی دیفلیت خام RawInflate

روال کدگشایی دیفلیت خام(p: تهی*، n: صحیح، expected_size: صحیح، ok &: منطقی): بافر بایت
DEFLATE خام را باز می‌کند؛ expected_size اندازه‌ی تقریبی خروجی است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

نویسنده بیت جدید NewBitWriter

روال نویسنده بیت جدید(): نویسنده بیت
نویسنده‌ی بیت تازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

نوشتن بیت BitWriteBit

روال نوشتن بیت(w &: نویسنده بیت، bit: صحیح)
یک بیت می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

نوشتن بیت‌ها BitWriteBits

روال نوشتن بیت‌ها(w &: نویسنده بیت، value: صحیح، count: صحیح)
count بیت پایین value را می‌نویسد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

تخلیه بیت BitFlush

روال تخلیه بیت(w &: نویسنده بیت)
بیت‌های مانده را، با صفر پر، به بایت آخر می‌فرستد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

طول نویسنده بیت BitWriterLen

روال طول نویسنده بیت(w &: نویسنده بیت): صحیح
تعداد بایت‌های نوشته‌شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

آزادسازی نویسنده بیت BitWriterFree

روال آزادسازی نویسنده بیت(w &: نویسنده بیت)
حافظه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

خواننده بیت جدید NewBitReader

روال خواننده بیت جدید(p: تهی*، n: صحیح): خواننده بیت
خواننده‌ی بیت روی حافظه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

خواننده بیت از بافر BitReaderFromBuf

روال خواننده بیت از بافر(b: بافر بایت): خواننده بیت
خواننده‌ی بیت روی بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

خواندن بیت BitReadBit

روال خواندن بیت(r &: خواننده بیت): صحیح
یک بیت می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

خواندن بیت‌ها BitReadBits

روال خواندن بیت‌ها(r &: خواننده بیت، count: صحیح): صحیح
count بیت می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Bits.salam

چک جمع سی آر سی CRC32

روال چک جمع سی آر سی(p: تهی*، n: صحیح): طبیعی۳۲
چک‌جمع CRC-32 (همان ZIP و جی‌زیپ) برای بررسی سالم بودن داده.
compress-Checksum.salam
واردسازی فشرده سازی

روال ریشه:
    سرچاپ فشرده سازی.چک جمع سی آر سی رشته("123456789")، فشرده سازی.چک جمع ادلر رشته("Wikipedia")
    ب := فشرده سازی.بافر از رشته("123456789")
    سرچاپ فشرده سازی.چک جمع سی آر سی(ب.data، ب.len) == فشرده سازی.چک جمع سی آر سی بافر(ب)
    سرچاپ فشرده سازی.چک جمع ادلر(ب.data، ب.len) == فشرده سازی.چک جمع ادلر بافر(ب)
    سرچاپ فشرده سازی.چک جمع سی آر سی رشته("سلام")
پایان
خروجی3421780262 300286872 true true 586116898

چک جمع سی آر سی رشته CRC32Str

روال چک جمع سی آر سی رشته(s: رشته): طبیعی۳۲
CRC-32 یک رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Checksum.salam

چک جمع سی آر سی بافر CRC32Buf

روال چک جمع سی آر سی بافر(b: بافر بایت): طبیعی۳۲
CRC-32 یک بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Checksum.salam

چک جمع ادلر Adler32

روال چک جمع ادلر(p: تهی*، n: صحیح): طبیعی۳۲
چک‌جمع Adler-32 (همان zlib)؛ سریع‌تر از CRC-32 ولی کمی ضعیف‌تر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Checksum.salam

چک جمع ادلر رشته Adler32Str

روال چک جمع ادلر رشته(s: رشته): طبیعی۳۲
Adler-32 یک رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Checksum.salam

چک جمع ادلر بافر Adler32Buf

روال چک جمع ادلر بافر(b: بافر بایت): طبیعی۳۲
Adler-32 یک بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Checksum.salam

بافر بایت جدید NewByteBuf

روال بافر بایت جدید(): بافر بایت
بافر خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

بافر بایت جدید با ظرفیت NewByteBufCap

روال بافر بایت جدید با ظرفیت(capacity: صحیح): بافر بایت
بافر خالی با ظرفیت اولیه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

افزودن بایت BufPush

روال افزودن بایت(b &: بافر بایت، v: صحیح)
یک بایت اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

افزودن بایت‌ها BufPushBytes

روال افزودن بایت‌ها(b &: بافر بایت، p: تهی*، n: صحیح)
n بایت از حافظه اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

افزودن بافر BufPushBuf

روال افزودن بافر(b &: بافر بایت، src: بافر بایت)
بایت‌های بافر دیگر را اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

افزودن عدد۳۲ BufPushU32

روال افزودن عدد۳۲(b &: بافر بایت، v: صحیح)
عدد ۳۲ بیتی را به شکل ۴ بایت کوچک‌انتها اضافه می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

دریافت بایت BufGet

روال دریافت بایت(b: بافر بایت، i: صحیح): صحیح
بایت شماره‌ی i.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

تنظیم بایت BufSet

روال تنظیم بایت(b &: بافر بایت، i: صحیح، v: صحیح)
بایت شماره‌ی i را تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

طول بافر BufLen

روال طول بافر(b: بافر بایت): صحیح
تعداد بایت‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

آزادسازی بافر BufFree

روال آزادسازی بافر(b &: بافر بایت)
حافظه‌ی بافر را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

بازنشانی بافر BufReset

روال بازنشانی بافر(b &: بافر بایت)
بافر را خالی می‌کند و حافظه را نگه می‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

کپی بافر BufClone

روال کپی بافر(b: بافر بایت): بافر بایت
رونوشت مستقل بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

برابری بافر BufEquals

روال برابری بافر(a: بافر بایت، b: بافر بایت): منطقی
اگر دو بافر بایت‌های یکسان داشته باشند، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

بافر از رشته BufFromStr

روال بافر از رشته(s: رشته): بافر بایت
بایت‌های یک رشته را در بافر تازه می‌ریزد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

بافر به رشته BufToStrUnsafe

روال بافر به رشته(b: بافر بایت): رشته
بافر را رشته فرض می‌کند؛ اگر بافر بایت صفر داشته باشد، رشته همان‌جا تمام می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

بافر به پایه۶۴ BufToBase64

روال بافر به پایه۶۴(b: بافر بایت): رشته
بافر را به پایه‌۶۴ تبدیل می‌کند؛ برای نمایش داده‌ی دودویی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

خواننده بایت جدید NewByteReader

روال خواننده بایت جدید(p: تهی*، n: صحیح): خواننده بایت
خواننده روی n بایت از حافظه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

خواننده از بافر ReaderFromBuf

روال خواننده از بافر(b: بافر بایت): خواننده بایت
خواننده روی بایت‌های بافر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

باقیمانده RdLeft

روال باقیمانده(r: خواننده بایت): صحیح
تعداد بایت‌های خوانده‌نشده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

خواندن بایت RdByte

روال خواندن بایت(r &: خواننده بایت): صحیح
یک بایت می‌خواند؛ پس از انتها bad درست می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

خواندن عدد۳۲ RdU32

روال خواندن عدد۳۲(r &: خواننده بایت): صحیح
عدد ۴ بایتی کوچک‌انتها می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

خواندن بایت‌ها RdBytes

روال خواندن بایت‌ها(r &: خواننده بایت، n: صحیح): بافر بایت
n بایت را در بافر تازه می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Buffer.salam

فشرده سازی دیفلیت DeflateCompress

روال فشرده سازی دیفلیت(p: تهی*، n: صحیح): بافر بایت
LZ77 و هافمن در قالب ویژه‌ی سلام. این همان DEFLATE استاندارد zlib نیست؛ برای قالب استاندارد دیفلیت خام یا جی‌زیپ را به کار ببرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

کدگشایی دیفلیت DeflateDecompress

روال کدگشایی دیفلیت(p: تهی*، n: صحیح): بافر بایت
خروجی فشرده سازی دیفلیت را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

کدگذاری انتقال به جلو MTFEncode

روال کدگذاری انتقال به جلو(inbuf: بافر بایت): بافر بایت
کدگذاری انتقال به جلو: هر بایت با جایش در فهرستی از بایت‌های اخیر جایگزین می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی انتقال به جلو MTFDecode

روال کدگشایی انتقال به جلو(inbuf: بافر بایت): بافر بایت
انتقال به جلو را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

تبدیل باروز ویلر BWTTransform

روال تبدیل باروز ویلر(p: تهی*، n: صحیح، primary_out &: صحیح): بافر بایت
تبدیل باروز ویلر: بایت‌ها را طوری جابه‌جا می‌کند که بایت‌های مشابه کنار هم بیفتند؛ شماره‌ی سطر اصلی در primary_out برمی‌گردد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

معکوس باروز ویلر BWTInverse

روال معکوس باروز ویلر(p: تهی*، n: صحیح، primary: صحیح): بافر بایت
تبدیل باروز ویلر را با شماره‌ی سطر اصلی برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی باروز ویلر BWTCompress

روال فشرده سازی باروز ویلر(p: تهی*، n: صحیح): بافر بایت
باروز ویلر، سپس انتقال به جلو و فشرده‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی باروز ویلر BWTDecompress

روال کدگشایی باروز ویلر(p: تهی*، n: صحیح): بافر بایت
داده‌ی فشرده با باروز ویلر را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

دیفلیت خام RawDeflate

روال دیفلیت خام(p: تهی*، n: صحیح): بافر بایت
DEFLATE استاندارد (RFC 1951) بدون سرآیند؛ همان چیزی که درون ZIP و جی‌زیپ است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Gzip.salam

فشرده سازی Compress

روال فشرده سازی(method: صحیح، p: تهی*، n: صحیح): بافر بایت
داده را با روش داده‌شده فشرده می‌کند. خروجی شماره‌ی روش را ندارد؛ برای بازکردن باید همان روش را بدانید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی Decompress

روال کدگشایی(method: صحیح، p: تهی*، n: صحیح): بافر بایت
داده‌ی فشرده‌شده با روش داده‌شده را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی رشته CompressStr

روال فشرده سازی رشته(method: صحیح، s: رشته): بافر بایت
رشته را فشرده می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی بافر CompressBuf

روال فشرده سازی بافر(method: صحیح، b: بافر بایت): بافر بایت
بافر را فشرده می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی بافر DecompressBuf

روال کدگشایی بافر(method: صحیح، b: بافر بایت): بافر بایت
بافر فشرده را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

بهترین فشرده سازی CompressBest

روال بهترین فشرده سازی(p: تهی*، n: صحیح، method_out &: صحیح): بافر بایت
همه‌ی روش‌ها را امتحان می‌کند، کوتاه‌ترین خروجی را برمی‌گرداند و روش آن را در method_out می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

نسبت Ratio

روال نسبت(compressed_len: صحیح، original_len: صحیح): اعشار۶۴
نسبت اندازه‌ی فشرده به اصلی؛ کمتر از ۱ یعنی کوچک‌تر شده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی الزد۷۷ LZ77Compress

روال فشرده سازی الزد۷۷(p: تهی*، n: صحیح): بافر بایت
فشرده‌سازی LZ77: تکه‌های تکراری با ارجاع به جای قبلی‌شان جایگزین می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی الزد۷۷ LZ77Decompress

روال کدگشایی الزد۷۷(p: تهی*، n: صحیح): بافر بایت
داده‌ی LZ77 را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

فشرده سازی هافمن HuffmanCompress

روال فشرده سازی هافمن(p: تهی*، n: صحیح): بافر بایت
کدگذاری هافمن: بایت‌های پرتکرار کد کوتاه‌تر می‌گیرند. جدول کدها همراه داده ذخیره می‌شود، پس برای داده‌ی کوچک خروجی بزرگ‌تر می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam

کدگشایی هافمن HuffmanDecompress

روال کدگشایی هافمن(p: تهی*، n: صحیح): بافر بایت
داده‌ی هافمن را باز می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: compress-Methods.salam