Tech Help
Γιατί το Base64 μεγαλώνει τα αρχεία;
Το Base64 συνήθως μεγαλώνει τα δυαδικά δεδομένα περίπου κατά ένα τρίτο. Δείτε τη δομή 3 byte σε 4 χαρακτήρες, το γέμισμα, το επιπλέον Data URL και πότε αξίζει το έξτρα μέγεθος.
Το Base64 συνήθως μεγαλώνει τα δυαδικά δεδομένα περίπου κατά ένα τρίτο, γιατί αναπαριστά κάθε 3 byte δυαδικών δεδομένων με 4 εκτυπώσιμους χαρακτήρες Base64.
Αν το μήκος εισόδου δεν είναι ακριβές πολλαπλάσιο του 3, το τυπικό Base64 με γέμισμα μπορεί να προσθέσει =. Το μήκος κωδικοποίησης είναι 4 × ceil(n / 3), όπου n είναι το αρχικό μήκος σε byte.
Το «περίπου 33%» περιγράφει μεγάλες εισόδους. Στις μικροσκοπικές εισόδους το γέμισμα μπορεί να φαίνεται ως πολύ μεγαλύτερο ποσοστό. Το Base64 δεν είναι συμπίεση. Για κωδικοποίηση έναντι κρυπτογράφησης, δείτε [Το Base64 δεν είναι κρυπτογράφηση: τι κάνει πραγματικά](/el/story/base64-is-not-encryption).
Αυτό το άρθρο εξηγεί γιατί η έξοδος Base64 είναι μεγαλύτερη από τα αρχικά byte. Δεν είναι οδηγός ασφάλειας. Αν χρειάζεστε κωδικοποίηση έναντι κρυπτογράφησης, χρησιμοποιήστε το Το Base64 δεν είναι κρυπτογράφηση: τι κάνει πραγματικά.
Γιατί το Base64 χρειάζεται περισσότερο χώρο;
3 byte είναι 24 bit. Το Base64 χωρίζει αυτά τα 24 bit σε 4 ομάδες των 6 bit. Κάθε ομάδα αντιστοιχεί σε έναν χαρακτήρα Base64, οπότε 3 byte εισόδου γίνονται 4 χαρακτήρες εξόδου. Αποθηκευμένα ως 1 byte ανά χαρακτήρα ASCII, αυτό είναι 4 / 3 ≈ 1,333 — αύξηση περίπου 33,3%.
- 3 byte (24 bit)
- Χωρισμός σε 4 ομάδες των 6 bit
- Κάθε ομάδα → ένας χαρακτήρας Base64
- 4 χαρακτήρες (συχνά 4 byte κειμένου)
Ένα απλό, ελέγξιμο παράδειγμα
Αυτές οι κωδικοποιήσεις ταιριάζουν με το τυπικό Base64 με γέμισμα.
Man
Man
Base64
TWFu
Το Man είναι 3 byte UTF-8/ASCII. Το TWFu είναι 4 χαρακτήρες: 3 → 4.
Hello
Hello
Base64
SGVsbG8=
Το Hello είναι 5 byte. Το SGVsbG8= είναι 8 χαρακτήρες, μαζί με ένα =. Σε μικρά δεδομένα το γέμισμα κάνει το ποσοστό να φαίνεται μεγαλύτερο από 33%.
Πώς υπολογίζετε το μέγεθος Base64;
Για τυπικό Base64 με γέμισμα, encodedLength = 4 × ceil(originalBytes / 3).
| Αρχικά byte | Χαρακτήρες Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 8 |
| 5 | 8 |
| 6 | 8 |
1 ή 2 byte εξακολουθούν να δίνουν 4 χαρακτήρες. Χρησιμοποιήστε τον τύπο, όχι σταθερό 33%.
Τι σημαίνει το γέμισμα «=»;
Το σημάδι = δείχνει ότι το τελευταίο μπλοκ 3 byte δεν ήταν γεμάτο. 1 byte εισόδου χρησιμοποιεί δύο =· 2 byte ένα· 3 byte κανένα. Το γέμισμα δεν είναι κρυπτογράφηση ούτε χαρακτηριστικό ασφαλείας.
Χρησιμοποιεί το Base64URL λιγότερο χώρο;
Το Base64URL αλλάζει το + σε - και το / σε _, και το Κωδικοποίηση Base64 παραλείπει τα τελικά = στην κωδικοποίηση. Αυτό μπορεί να κοντύνει τη συμβολοσειρά κατά εκείνα τα =. Η δομή 3 byte → 4 χαρακτήρες μένει ίδια, οπότε το Base64URL δεν είναι πιο αποδοτική δυαδική μορφή.
Γιατί οι μικροσκοπικές είσοδοι μπορούν να μεγαλώσουν πάνω από 33%;
1 byte → 4 χαρακτήρες είναι αύξηση μήκους 300%. 2 byte → 4 είναι 100%. 3 byte → 4 είναι περίπου 33,3%. Καθώς το n μεγαλώνει, το γέμισμα μετρά λιγότερο και το επιπλέον πλησιάζει περίπου 33%. Το Base64 δεν είναι πάντα ακριβώς 33% μεγαλύτερο.
Γιατί ένα Base64 Data URL είναι ακόμη μεγαλύτερο;
Ένα Data URL προσθέτει πρόθεμα όπως data:image/png;base64, πριν από το φορτίο. Σε ένα μικροσκοπικό αρχείο το πρόθεμα μπορεί να κυριαρχήσει στο ποσοστό. Το Κωδικοποίηση Base64 μπορεί να δώσει ακατέργαστο Base64 ή Data URL· η έξοδος Data URL χρησιμοποιεί το τυπικό αλφάβητο.
Base64 έναντι δυαδικού: ποιο είναι μικρότερο;
Τα ακατέργαστα δυαδικά είναι πιο αποδοτικά σε χώρο για μεταφορά και αποθήκευση. Το Base64 είναι μεγαλύτερο, αλλά ασφαλές ως κείμενο σε JSON, email και άλλες διαδρομές μόνο-κειμένου. Είναι κωδικοποίηση δυαδικού σε κείμενο, όχι συμπίεση.
Συμπιέζει το Base64 αρχεία;
Όχι. Το Base64 δεν είναι μορφή συμπίεσης. Το κωδικοποιημένο κείμενο είναι συνήθως μεγαλύτερο από τα αρχικά byte. Αν αργότερα εφαρμόσετε gzip ή Brotli σε αυτό το κείμενο, κάποια πλεονασμός μπορεί να συρρικνωθεί—το αποτέλεσμα εξαρτάται από τα δεδομένα και τον συμπιεστή. Το gzip δεν αφαιρεί πλήρως το επιπλέον του Base64.
Τι γίνεται αν το Base64 περάσει από gzip;
Η συμπίεση HTTP μπορεί να μειώσει κάποια επαναλαμβανόμενα μοτίβα στο κείμενο Base64. Τα JPEG, PNG ή ZIP συχνά συμπιέζονται άσχημα ήδη ως ακατέργαστα byte, και το Base64-μετά-gzip εξακολουθεί να εξαρτάται από την περίπτωση. Δεν υπάρχει καθολικό επιπλέον ποσοστό μετά το gzip.
Πρέπει να αποθηκεύετε αρχεία ως Base64;
Το Base64 μπορεί να χωρέσει δυαδικά σε πεδίο JSON, μικρό ενσωματωμένο πόρο, API μόνο-κειμένου, αντιγραφή/επικόλληση ή Data URL. Για μεγάλα αρχεία μεγαλώνουν αποθήκευση, μνήμη και φορτίο. Αυτό δεν σημαίνει «μην χρησιμοποιείτε ποτέ Base64 για αρχεία».
Γιατί το Base64 είναι συνηθισμένο σε JSON API;
Το JSON δεν έχει εγγενή τύπο ακατέργαστου δυαδικού, οπότε τα API συχνά βάζουν byte σε συμβολοσειρά Base64. Για μεγάλα αρχεία το multipart/form-data, η αποθήκευση αντικειμένων ή απευθείας δυαδική αποστολή μπορεί να ταιριάζει καλύτερα. Καμία επιλογή δεν είναι πάντα η καλύτερη.
Γιατί χρησιμοποιείται το Base64 στο email;
Το MIME μπορεί να χρησιμοποιήσει Base64 ώστε ένα δυαδικό συνημμένο να ταξιδεύει ως χαρακτήρες ασφαλείς για κείμενο. Το ίδιο επιπλέον μεγέθους ισχύει. Είναι αναπαράσταση μεταφοράς, όχι μικρότερο αρχείο.
Πότε αξίζει το έξτρα μέγεθος;
Το έξτρα μέγεθος μπορεί να αξίζει όταν τα δυαδικά πρέπει να κάθονται μέσα σε κείμενο, το φορτίο είναι μικρό, ένα API απαιτεί Base64 ή χρειάζεστε Data URL. Για μεγάλα μέσα, προτιμήστε ακατέργαστα δυαδικά όταν το σύστημα το επιτρέπει.
Πότε πρέπει να αποφεύγετε το Base64;
Παραλείψτε το για μεγάλα αρχεία, στενό εύρος ζώνης, συχνές μεταφορές ή όταν υπάρχει ήδη δυαδική διαδρομή—κατά περίπτωση, όχι «το Base64 είναι κακή πρακτική».
Μήκη Base64 με γέμισμα που μπορείτε να ελέγξετε
Αρχικοί αριθμοί byte και αριθμοί χαρακτήρων τυπικού Base64 με γέμισμα:
| Αρχικά byte | Χαρακτήρες Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 10 | 16 |
| 100 | 136 |
| 1,000 | 1,336 |
Όλες οι γραμμές ακολουθούν 4 × ceil(n / 3). Αυτοί είναι αριθμοί χαρακτήρων Base64.
Παράδειγμα: Πόσο μεγάλο θα γίνει ένα αρχείο 1.000 byte;
4 × ceil(1000 / 3). ceil(333.333…) = 334, και 4 × 334 = 1336. Άρα 1.000 byte γίνονται 1.336 χαρακτήρες Base64. Αποθηκευμένοι ως UTF-8/ASCII, κάθε χαρακτήρας είναι συνήθως 1 byte—μην θεωρείτε το 1.336 ακριβή αριθμό byte μνήμης.
Μπορεί το Base64 να χρησιμοποιεί περισσότερη μνήμη απ’ όσο υπονοεί το μέγεθος αρχείου;
Ορισμένα περιβάλλοντα εκτέλεσης αποθηκεύουν συμβολοσειρές με περισσότερα από 1 byte ανά χαρακτήρα, και η κωδικοποίηση/αποκωδικοποίηση μπορεί να κρατά ενδιάμεση μνήμη και συμβολοσειρά μαζί. Η χρήση μνήμης δεν είναι ακριβώς το μήκος χαρακτήρων.
Απλός οδηγός απόφασης μεγέθους
Αν το σύστημα δέχεται ακατέργαστα δυαδικά, προτιμήστε τα για μέγεθος. Αν επιτρέπεται μόνο κείμενο, το Base64 μπορεί να ταιριάζει. Για μεγάλο φορτίο, ελέγξτε αν υπάρχει δυαδική διαδρομή αποστολής. Για κείμενο ασφαλές σε URL, σκεφτείτε Base64URL—η επέκταση 3-προς-4 μένει.
- Πρέπει να σταλούν δυαδικά δεδομένα
- Επιτρέπονται ακατέργαστα δυαδικά; Προτιμήστε δυαδικό για μέγεθος
- Μόνο πεδίο κειμένου; Το Base64 μπορεί να είναι κατάλληλο
- Μεγάλο φορτίο; Ελέγξτε δυαδική αποστολή
- Χρειάζεστε κείμενο ασφαλές σε URL; Σκεφτείτε Base64URL
- Περιμένετε περίπου 33% περισσότερο κείμενο σε μεγάλες εισόδους
Το Base64 δεν σχεδιάστηκε για να κάνει τα δεδομένα μικρότερα. Κάνει τα δυαδικά ευκολότερα να αναπαρασταθούν σε συστήματα κειμένου, και το κόστος είναι έξτρα μέγεθος.
Κωδικοποιήστε ή αποκωδικοποιήστε Base64 στο πρόγραμμα περιήγησης
Το NEXNARA Κωδικοποίηση Base64 κωδικοποιεί και αποκωδικοποιεί κείμενο και μπορεί να μετατρέψει αρχείο σε Base64 ή Data URL και Base64 πάλι σε αρχείο.
Το κείμενο χρησιμοποιεί byte UTF-8, έπειτα Base64—όχι μόνο ASCII. Επιλέξτε Standard ή Base64URL. Η έξοδος αρχείου μπορεί να είναι ακατέργαστο Base64 ή Data URL (τυπικό αλφάβητο). Η μη έγκυρη είσοδος απορρίπτεται. Τα byte που δεν είναι UTF-8 χρειάζονται λειτουργία αρχείου, όχι αποκωδικοποίηση κειμένου.
Αρχεία πάνω από 10 MB μπορεί να επιβραδύνουν την καρτέλα (προειδοποίηση). Αρχεία πάνω από 32 MB αποκλείονται.
Η κωδικοποίηση και η αποκωδικοποίηση γίνονται στο πρόγραμμα περιήγησής σας. Το αρχείο δεν στέλνεται σε διακομιστή NEXNARA για αυτό το εργαλείο. Οι διαφημίσεις και άλλες λειτουργίες του ιστότοπου εξακολουθούν να χρησιμοποιούν το δίκτυο.
Επικολλήστε κείμενο ή αρχείο στο Κωδικοποίηση Base64 και συγκρίνετε τα αρχικά byte με το κωδικοποιημένο μήκος.
FAQ
Γιατί το Base64 αυξάνει το μέγεθος αρχείου;
Αντιστοιχίζει 3 byte (24 bit) σε 4 χαρακτήρες (4 × 6 bit). Αποθηκευμένο ως κείμενο, είναι περίπου ένα τρίτο περισσότερο για μεγάλες εισόδους.
Είναι το Base64 πάντα 33% μεγαλύτερο;
Όχι. Οι μεγάλες είσοδοι πλησιάζουν περίπου 33,3%. Οι μικροσκοπικές είσοδοι μπορούν να μεγαλώσουν περισσότερο λόγω γεμίσματος. Χρησιμοποιήστε 4 × ceil(n / 3).
Πόσο μεγαλύτερο είναι το Base64 από το δυαδικό;
Το τυπικό μήκος με γέμισμα είναι 4 × ceil(n / 3) χαρακτήρες. Ένα πρόθεμα Data URL προσθέτει περισσότερο.
Μειώνει η συμπίεση Base64 το μέγεθος αρχείου;
Το Base64 δεν συμπιέζει. gzip ή Brotli στο κωδικοποιημένο κείμενο μπορεί να συρρικνώσει μέρος του· δεν σβήνουν το επιπλέον σε κάθε περίπτωση.
Χρησιμοποιεί το Base64URL λιγότερο χώρο;
Μπορεί να παραλείψει γέμισμα =, οπότε η συμβολοσειρά μπορεί να είναι 0–2 χαρακτήρες πιο κοντή. Η δομή κωδικοποίησης 3-προς-4 είναι ίδια.
Να χρησιμοποιώ Base64 για μεγάλα αρχεία;
Μόνο αν χρειάζεστε κείμενο. Για μεγάλες ή συχνές μεταφορές μια δυαδική διαδρομή είναι συχνά μικρότερη. Το Base64 δεν είναι πάντα λάθος για API.