Τι είναι ένα αρχείο LZ4;
Ένα αρχείο με επέκταση .lz4 είναι ένα συμπιεσμένο αρχείο αρχειοθέτησης που δημιουργήθηκε με εφαρμογές/ βοηθητικά προγράμματα που υποστηρίζουν τη συμπίεση LZ4. Ο αλγόριθμος LZ4 εστιάζει στην αντιστάθμιση μεταξύ ταχύτητας και αναλογίας συμπίεσης. Τα συμπιεσμένα αρχεία LZ4 μπορούν να δημιουργηθούν χρησιμοποιώντας το βοηθητικό πρόγραμμα γραμμής εντολών LZ4 και μπορούν να αποσυμπιεστούν χρησιμοποιώντας το ίδιο.
Μορφή αρχείου LZ4
Η μορφή αρχείου LZ4, που βασίζεται στον αλγόριθμο συμπίεσης LZ4, είναι ανεξάρτητη από τον τύπο της CPU, το λειτουργικό σύστημα, το σύστημα αρχείων και το σύνολο χαρακτήρων. Είναι κατάλληλο για συμπίεση αρχείων και συμπίεση ροής χρησιμοποιώντας τον αλγόριθμο LZ4. Η αρχική υλοποίηση της μορφής LZ4 πραγματοποιήθηκε στη γλώσσα C από τον Yann Collet το 2011 και είναι διαθέσιμη για αναφορά του προγραμματιστή στο Github .
Μορφή πλαισίου LZ4
Η γενική δομή της μορφής αρχείου LZ4 είναι όπως φαίνεται παρακάτω.
MagicNb | F. Περιγραφέας | Block | (…) | EndMark | C. Άθροισμα ελέγχου |
---|---|---|---|---|---|
4 byte | 3-15 byte | 4 byte | 0-4 byte |
Μαγικός αριθμός
4 Bytes, μορφή Little endian. Αξία: 0x184D2204
Περιγραφέας πλαισίου
Ο περιγραφέας πλαισίου αποτελείται από 3 t0 15 byte και είναι το πιο σημαντικό μέρος των προδιαγραφών. Μαζί, τα πεδία Magic_Number και Frame_Descriptor αναφέρονται ως LZ4 Frame Header και το μέγεθός του κυμαίνεται μεταξύ 7 και 19 byte. Είναι όπως φαίνεται παρακάτω.
FLG | BD | (Μέγεθος περιεχομένου) | (Λεξικό ID) | HC |
---|---|---|---|---|
1 byte | 1 byte | 0 - 8 byte | 0 - 4 byte | 1 byte |
Μπλοκ δεδομένων
Κάθε μπλοκ δεδομένων ακολουθεί την ακόλουθη σειρά.
Μέγεθος μπλοκ | δεδομένα | (Block Checksum) |
---|---|---|
4 byte | 0 - 4 byte |
EndMark
Η ροή των μπλοκ τελειώνει όταν το τελευταίο μπλοκ δεδομένων ακολουθείται από την τιμή 32-bit 0x00000000.
Άθροισμα ελέγχου περιεχομένου
Το Content_Checksum επαληθεύει την εγκυρότητα του περιεχομένου που αποκωδικοποιείται σωστά και πραγματοποιείται χρησιμοποιώντας το αποτέλεσμα του αλγορίθμου xxHash-32. Επικυρώνει τα αποτελέσματα της επιτυχούς μετάδοσης όλων των μπλοκ με τη σωστή σειρά και χωρίς κανένα σφάλμα.