السلطان
  1. الرئيسية
  2. الأمثلة
  3. الضغط

ضغط بيانات متكررة بـgzip واستعادة الأصل

compression/gzip.sn
// ضغط بيانات متكررة بـgzip واستعادة الأصل.
استورد std.io.println;
استورد std.text.number;
استورد std.text.compare;
استورد std.text.from_bytes;
استورد std.text.transform;
استورد std.compression.gzip;

عرف الرئيسية(): عدد {
    دع الوحدة: نص = "SultanC ";
    دع النص_الأصلي: نص = كرر_النص(&الوحدة, 50);
    دع الأصل_بايتات: متجه ط8 = بايتات_من_نص(استنسخ(&النص_الأصلي));
    دع المضغوط: متجه ط8 = اضغط_جي_زيب(&الأصل_بايتات);
    اطبع_سطر(طبيعي_إلى_نص(الطول(الأصل_بايتات) مثل طبيعي));
    إذا ((الطول(المضغوط) مثل طبيعي) < (الطول(الأصل_بايتات) مثل طبيعي)) { اطبع_سطر("المضغوط أصغر"); };
    طابق فك_ضغط_جي_زيب(&المضغوط) مع
    | نتيجة.نجح(المستعاد) -> {
        دع النص_المستعاد: نص = من_بايتات(&المستعاد);
        إذا (نصان_متساويان(&النص_المستعاد, &النص_الأصلي)) { اطبع_سطر("الاستعادة سليمة"); };
    }
    | نتيجة.خطأ(_) -> { اطبع_سطر("بيانات تالفة"); أرجع 1; };
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/compression/gzip.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/compression/gzip.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة