แปลง GZIP เป็น Deflate

การแปลงสตรีม GZIP เป็น Raw DEFLATE เป็นการถอดส่วนห่อหุ้มไฟล์ด้านนอกและข้อมูลเมตาส่วนหัวออก เหลือไว้เฉพาะเพย์โหลดที่บีบอัดแล้วสำหรับโปรโตคอลเครือข่ายเฉพาะทางและคลังเก็บข้อมูลระดับต่ำ

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V

ระหว่างรอไฟล์ คุณเล่น Code Rain ได้เลย

รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

การเปรียบเทียบรูปแบบและข้อกำหนดทางเทคนิค

ข้อกำหนดGZIPDEFLATE
ประเภท MIMEapplication/gzipapplication/zlib
ประเภทคอนเทนเนอร์สตรีม DEFLATEสตรีม DEFLATE ดิบ
การบีบอัดDEFLATE (RFC 1951)LZ77 + การเข้ารหัสแบบ Huffman
ข้อกำหนดมาตรฐานIETF RFC 1952IETF RFC 1950 / RFC 1951
ส่วนหัวที่ระบุลายเซ็นไฟล์1F 8B (gzip ID1/ID2)78 01 / 78 9C / 78 DA (zlib header bytes)

ภาพรวมรูปแบบและการใช้งาน

การแปลงสตรีม GZIP เป็น Raw DEFLATE มักเกิดขึ้นในการพัฒนาเว็บ การเขียนโปรแกรมเครือข่าย และขั้นตอนการจัดเก็บข้อมูลระดับต่ำ นักพัฒนามักจะจัดการกับ GZIP เมื่อบันทึกไฟล์เดี่ยวลงในดิสก์เนื่องจากรูปแบบดังกล่าวมีข้อมูลเมตาที่มีประโยชน์ เช่น ชื่อไฟล์ต้นฉบับและเวลาที่แก้ไข อย่างไรก็ตาม โปรโตคอลการบีบอัด HTTP สมัยใหม่และรูปแบบไบนารีเฉพาะเจาะจงคาดหวังเฉพาะเพย์โหลดที่บีบอัดแล้วโดยไม่มีไบต์ห่อหุ้มใดๆ การดำเนินการแปลงนี้ช่วยให้วิศวกรสามารถป้อนข้อมูลบีบอัดมาตรฐานลงในสตรีมเครือข่ายหรือตัวแยกวิเคราะห์แบบกำหนดเองได้โดยตรง ตัวอย่างเช่น การสร้างตัวจัดการการตอบสนอง HTTP แบบกำหนดเองหรือการทำงานกับไฟล์เก็บถาวร ZIP มักจะต้องถอดส่วนหัว GZIP และส่วนท้าย CRC32 ออกเพื่อแยกเอาต์พุตอัลกอริธึมดิบ การลบข้อมูลคอนเทนเนอร์พิเศษนี้จะช่วยลดภาระโอเวอร์เฮดเมื่อทุกๆ ไบต์มีความสำคัญในสภาพแวดล้อมการเขียนโปรแกรมที่มีข้อจำกัด

ข้อกำหนดทางเทคนิคและรายละเอียดตัวแปลงสัญญาณ

สตรีม GZIP ซึ่งระบุด้วย MIME type application/gzip ใช้โครงสร้างคอนเทนเนอร์ตาม RFC 1952 โดยเริ่มด้วยส่วนหัวลายเซ็นไบต์สองไบต์ (0x1F, 0x8B) ตามด้วยแฟล็กการบีบอัด เวลาแก้ไข รหัสระบบปฏิบัติการ และชื่อไฟล์ที่อาจมีหรือไม่มีก็ได้ ข้อมูลที่บีบอัดจะอยู่ตรงกลางไฟล์ ส่วนท้ายมีเช็คซัม CRC32 สี่ไบต์และตัวบ่งชี้ขนาดข้อมูลก่อนบีบอัดสี่ไบต์ ส่วน Raw DEFLATE เป็นบิตสตรีมตาม RFC 1951 ซึ่งไม่มีลายเซ็น ส่วนหัวจัดกรอบ หรือส่วนท้ายแบบตายตัว MIME type application/zlib หมายถึงตัวห่อหุ้ม zlib ตาม RFC 1950 รอบ DEFLATE ไม่ใช่สตรีม Raw DEFLATE การแปลง GZIP เป็น Raw DEFLATE จะนำข้อมูลเมตาและเช็คซัมของ GZIP ออก โดยคงเพย์โหลดที่บีบอัดไว้

ความเข้ากันได้ของระบบปฏิบัติการและเบราว์เซอร์

สตรีม Raw DEFLATE สามารถทำงานได้โดยตรงในระบบปฏิบัติการสมัยใหม่และรันไทม์ของเว็บผ่านภาษาโปรแกรมมาตรฐาน เช่น Python, Node.js และ C++ เบราว์เซอร์จัดการกับ DEFLATE ได้โดยตรงผ่านสแต็กส่วนหัว content-encoding ของ HTTP ระบบปฏิบัติการอย่าง Windows, macOS และ Linux รองรับสตรีมดิบผ่านไลบรารีการบีบอัดของระบบ เช่น zlib แพลตฟอร์มมือถือรวมถึง Android และ iOS มีการเข้าถึง API โดยตรงไปยังรูทีน DEFLATE สำหรับชั้นการจัดเก็บข้อมูลแอปแบบกำหนดเอง

เคล็ดลับการใช้งาน

ตรวจสอบให้แน่ใจเสมอว่าตัวแยกวิเคราะห์ปลายทางของคุณคาดหวังว่าจะเป็นสตรีม RFC 1951 ล้วนๆ แทนที่จะเป็นสตรีมที่ห่อด้วย zlib เนื่องจาก zlib จะเพิ่มส่วนหัวสองไบต์ที่ตัวแยกวิเคราะห์ Raw DEFLATE จะปฏิเสธ

คำถามที่พบบ่อย

จะแปลงสตรีม GZIP เป็น Raw DEFLATE โดยไม่สูญเสียคุณภาพได้อย่างไร

ทั้งสองรูปแบบใช้อัลกอริทึมการบีบอัดแบบไม่สูญเสียข้อมูลที่เหมือนกัน การแปลงรูปแบบเหล่านี้ทำได้ง่ายๆ เพียงอ่านคอนเทนเนอร์ GZIP ถอดส่วนหัวสิบไบต์และส่วนท้ายแปดไบต์ออก แล้วบันทึกบล็อกที่บีบอัดด้านใน ไม่มีข้อมูลสูญหายเนื่องจากอัลกอริทึมเบื้องต้นยังคงไม่เปลี่ยนแปลง

ความแตกต่างระหว่างสตรีม GZIP และ Raw DEFLATE คืออะไร

GZIP เป็นคอนเทนเนอร์ไฟล์ที่สมบูรณ์ซึ่งประกอบด้วยส่วนหัวลายเซ็นไฟล์ ชื่อไฟล์ต้นฉบับ ประทับเวลาการแก้ไข และส่วนท้ายผลรวมตรวจสอบ Raw DEFLATE เป็นเพียงข้อมูลที่บีบอัดเท่านั้น โดยไม่มีส่วนหัว ส่วนท้าย หรือข้อมูลเมตาของไฟล์