Τι είναι ένα αρχείο LZMA;
Ένα αρχείο με επέκταση .lzma είναι ένα συμπιεσμένο αρχείο αρχειοθέτησης που δημιουργήθηκε χρησιμοποιώντας τη μέθοδο συμπίεσης LZMA (Lempel-Ziv-Markov chain Algorithm). Αυτοί βρίσκονται/χρησιμοποιούνται κυρίως στο λειτουργικό σύστημα Unix και είναι παρόμοιοι με άλλους αλγόριθμους συμπίεσης όπως ο ZIP για την ελαχιστοποίηση του μεγέθους του αρχείου. Το LZMA είναι μια παλαιού τύπου μορφή αρχείου, η οποία βρίσκεται ή έχει αντικατασταθεί από τη μορφή .xz. Ο τύπος MIME της μορφής .lzma είναι `application/x-lzma’. Αυτή η μορφή αρχείου σχεδιάστηκε από τον Igor Pavlov για χρήση στο LZMA SDK.
Μορφή αρχείου LZMA
Το αρχείο LZMA αποτελείται από δύο κύρια μέρη:
- Κεφαλίδα
- Συμπιεσμένα δεδομένα
Κεφαλίδα LZMA
Τα αρχεία LZMA έχουν μια κεφαλίδα 13 byte που ακολουθείται από τα συμπιεσμένα δεδομένα LZMA. Η κεφαλίδα LZMA αποτελείται από:
- Ιδιότητες
- Μέγεθος λεξικού
- Μη συμπιεσμένο μέγεθος
Ιδιότητες κεφαλίδας LZMA
Το πεδίο Ιδιότητες περιέχει τρεις ιδιότητες. Μια συντομογραφία δίνεται σε παρένθεση, ακολουθούμενη από το εύρος τιμών της ιδιότητας. Το πεδίο αποτελείται από
- τον αριθμό των bit κυριολεκτικού περιβάλλοντος (lc, [0, 8]).
- τον αριθμό των κυριολεκτικών bit θέσης (lp, [0, 4]). και
- τον αριθμό των bit θέσης (pb, [0, 4]).
Μέγεθος λεξικού LZMA
Αυτός αποθηκεύεται ως ένας ανυπόγραφος μικρός ακέραιος endian 32-bit με τιμές που κυμαίνονται από 2^n και 2^n + 2^(n-1). Το LZMA Utils μπορεί να αποσυμπιέσει αρχεία με οποιοδήποτε μέγεθος λεξικού.
Μη συμπιεσμένο μέγεθος
Το μη συμπιεσμένο μέγεθος αποθηκεύεται ως ανυπόγραφος μικρός ακέραιος endian 64-bit. Μια ειδική τιμή 0xFFFF_FFFF_FFFF_FFFF υποδηλώνει ότι το μη συμπιεσμένο μέγεθος είναι άγνωστο. Η τιμή αντιπροσωπεύεται από τον δείκτη τέλους ωφέλιμου φορτίου (*) εάν και μόνο εάν το μη συμπιεσμένο μέγεθος είναι άγνωστο.