Tech Help
Prečo Base64 zväčšuje súbory?
Base64 zvyčajne zväčší binárne dáta asi o tretinu. Pozrite štruktúru 3 bajty na 4 znaky, výplň, réžiu Data URL a kedy sa extra veľkosť oplatí.
Base64 zvyčajne zväčší binárne dáta asi o tretinu, pretože každých 3 bajty binárnych dát reprezentuje 4 tlačiteľnými znakmi Base64.
Ak dĺžka vstupu nie je presný násobok 3, štandardné vyplnené Base64 môže pridať znaky =. Zakódovaná dĺžka je 4 × ceil(n / 3), kde n je pôvodný počet bajtov.
„Asi 33 %“ opisuje veľké vstupy. Pri drobných vstupoch môže výplň vyzerať ako oveľa väčšie percento. Base64 nie je kompresia. Pre kódovanie versus šifrovanie pozrite [Base64 nie je šifrovanie: čo skutočne robí](/sk/story/base64-is-not-encryption).
Tento článok vysvetľuje, prečo je výstup Base64 väčší ako pôvodné bajty. Nie je to bezpečnostná príručka. Ak potrebujete kódovanie versus šifrovanie, použite Base64 nie je šifrovanie: čo skutočne robí.
Prečo Base64 potrebuje viac miesta?
3 bajty sú 24 bitov. Base64 rozdelí týchto 24 bitov do 4 skupín po 6 bitoch. Každá skupina sa mapuje na jeden znak Base64, takže 3 vstupné bajty sa stanú 4 výstupnými znakmi. Uložené ako 1 bajt na ASCII znak to je 4 / 3 ≈ 1,333 — asi 33,3% nárast.
- 3 bajty (24 bitov)
- Rozdelenie do 4 skupín po 6 bitoch
- Každá skupina → jeden znak Base64
- 4 znaky (často 4 bajty textu)
Jednoduchý, overiteľný príklad
Tieto kódovania zodpovedajú štandardnému vyplnenému Base64.
Man
Man
Base64
TWFu
Man je 3 bajty UTF-8/ASCII. TWFu je 4 znaky: 3 → 4.
Hello
Hello
Base64
SGVsbG8=
Hello je 5 bajtov. SGVsbG8= je 8 znakov vrátane jedného =. Pri malých dátach výplň spôsobí, že percento vyzerá väčšie ako 33 %.
Ako spočítať veľkosť Base64?
Pre štandardné vyplnené Base64 platí encodedLength = 4 × ceil(originalBytes / 3).
| Pôvodné bajty | Znaky Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 8 |
| 5 | 8 |
| 6 | 8 |
1 alebo 2 bajty stále dajú 4 znaky. Použite vzorec, nie pevných 33 %.
Čo znamená výplň „=“?
Znak = ukazuje, že posledný blok 3 bajtov nebol plný. 1 vstupný bajt použije dve =; 2 bajty jedno; 3 bajty žiadne. Výplň nie je šifrovanie ani bezpečnostná funkcia.
Zaberá Base64URL menej miesta?
Base64URL mení + na - a / na _ a Kódovanie Base64 pri kódovaní vynecháva koncové =. To môže skrátiť reťazec o tieto =. Štruktúra 3 bajty → 4 znaky ostáva rovnaká, takže Base64URL nie je priestorovo úspornejší binárny formát.
Prečo môžu drobné vstupy narásť o viac ako 33 %?
1 bajt → 4 znaky je 300% nárast dĺžky. 2 bajty → 4 je 100 %. 3 bajty → 4 je asi 33,3 %. Ako n rastie, výplň menej záleží a réžia sa blíži k asi 33 %. Base64 nie je vždy presne o 33 % väčšie.
Prečo je Base64 Data URL ešte väčšie?
Data URL pridá pred užitočné dáta prefix ako data:image/png;base64,. Pri maličkom súbore môže prefix ovládnuť percento. Kódovanie Base64 vie vydať surové Base64 alebo Data URL; výstup Data URL používa štandardnú abecedu.
Base64 vs binárne: čo je menšie?
Surové binárne dáta sú priestorovo úspornejšie na prenos aj úložisko. Base64 je väčšie, ale textovo bezpečné v JSON, e-maile a ďalších len-textových cestách. Ide o kódovanie binárnych dát do textu, nie o kompresiu.
Komprimuje Base64 súbory?
Nie. Base64 nie je kompresný formát. Zakódovaný text je zvyčajne väčší ako pôvodné bajty. Keď na ten text neskôr použijete gzip alebo Brotli, časť redundancie sa môže zmenšiť—výsledok závisí od dát a kompresora. gzip neodstráni réžiu Base64 úplne.
Čo sa stane, keď sa Base64 gzipuje?
HTTP kompresia môže zmenšiť niektoré opakujúce sa vzory v texte Base64. JPEG, PNG alebo ZIP sa často zle komprimujú aj ako surové bajty a Base64-potom-gzip je stále závislé od prípadu. Po gzip neexistuje univerzálne extra percento.
Mali by ste ukladať súbory ako Base64?
Base64 sa hodí na binárne dáta v poli JSON, malý vložený zdroj, textové API, kopírovať/vložiť alebo Data URL. Pri veľkých súboroch rastú úložisko, pamäť aj užitočné dáta. To neznamená „nikdy nepoužívajte Base64 na súbory“.
Prečo je Base64 bežné v JSON API?
JSON nemá natívny surový binárny typ, takže API často vkladajú bajty do reťazca Base64. Pri veľkých súboroch sa lepšie hodí multipart/form-data, objektové úložisko alebo priame binárne nahratie. Ani jedna voľba nie je vždy najlepšia.
Prečo sa Base64 používa v e-maile?
MIME môže použiť Base64, aby binárna príloha cestovala ako textovo bezpečné znaky. Rovnaká réžia veľkosti platí. Ide o transportnú reprezentáciu, nie o menší súbor.
Kedy sa extra veľkosť oplatí?
Extra veľkosť sa môže oplatiť, keď binárne dáta musia byť v texte, užitočné dáta sú malé, API vyžaduje Base64, alebo potrebujete Data URL. Pri veľkých médiách dávajte prednosť surovým binárnym dátam, ak to systém dovolí.
Kedy by ste sa mali Base64 vyhnúť?
Preskočte ho pri veľkých súboroch, úzkej šírke pásma, častých prenosoch alebo keď už existuje binárna cesta—situačné, nie „Base64 je zlá prax“.
Dĺžky vyplneného Base64, ktoré môžete overiť
Pôvodné počty bajtov a počty znakov štandardného vyplneného Base64:
| Pôvodné bajty | Znaky Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 10 | 16 |
| 100 | 136 |
| 1,000 | 1,336 |
Všetky riadky spĺňajú 4 × ceil(n / 3). Ide o počty znakov Base64.
Príklad: Aký veľký bude súbor o 1 000 bajtoch?
4 × ceil(1000 / 3). ceil(333.333…) = 334 a 4 × 334 = 1336. Teda 1 000 bajtov sa stane 1 336 znakmi Base64. Uložené ako UTF-8/ASCII je každý znak zvyčajne 1 bajt—neberte 1 336 ako presný počet bajtov v pamäti.
Môže Base64 použiť viac pamäte, než naznačuje veľkosť súboru?
Niektoré behové prostredia ukladajú reťazce s viac ako 1 bajtom na znak a kódovanie/dekódovanie môže držať buffer aj reťazec naraz. Spotreba pamäte nie je presne dĺžka znakov.
Jednoduchý sprievodca rozhodnutím o veľkosti
Ak systém prijíma surové binárne dáta, dajte im prednosť kvôli veľkosti. Ak je povolený len text, Base64 sa môže hodiť. Pri veľkom náklade hľadajte binárnu nahrávaciu cestu. Pre text bezpečný v URL zvážte Base64URL—rozšírenie 3 na 4 ostáva.
- Treba odoslať binárne dáta
- Surové binárne dáta povolené? Preferujte binárne kvôli veľkosti
- Len textové pole? Base64 môže byť vhodné
- Veľký náklad? Hľadajte binárne nahratie
- Text bezpečný v URL? Zvážte Base64URL
- Pri veľkých vstupoch čakajte asi o 33 % viac textu
Base64 nie je navrhnuté, aby dáta zmenšovalo. Uľahčuje reprezentáciu binárnych dát v textových systémoch a cenou je extra veľkosť.
Kódujte alebo dekódujte Base64 v prehliadači
NEXNARA Kódovanie Base64 kóduje a dekóduje text a vie zo súboru urobiť Base64 alebo Data URL a z Base64 zasa súbor.
Text používa bajty UTF-8, potom Base64—nie len ASCII. Zvoľte Štandard alebo Base64URL. Výstup súboru môže byť surové Base64 alebo Data URL (štandardná abeceda). Neplatný vstup sa odmietne. Bajty, ktoré nie sú UTF-8, potrebujú režim súboru, nie textové dekódovanie.
Súbory nad 10 MB môžu kartu spomaliť (varovanie). Súbory nad 32 MB sa zablokujú.
Kódovanie a dekódovanie prebieha vo vašom prehliadači. Súbor sa pri tomto nástroji neposiela na server NEXNARA. Reklamy a ďalšie funkcie webu stále používajú sieť.
Vložte text alebo súbor do Kódovanie Base64 a porovnajte pôvodné bajty so zakódovanou dĺžkou.
FAQ
Prečo Base64 zväčšuje veľkosť súboru?
Mapuje 3 bajty (24 bitov) na 4 znaky (4 × 6 bitov). Uložené ako text je to pri veľkých vstupoch asi o tretinu viac.
Je Base64 vždy o 33 % väčšie?
Nie. Veľké vstupy sa blížia k asi 33,3 %. Drobné vstupy môžu narásť viac kvôli výplni. Použite 4 × ceil(n / 3).
O koľko je Base64 väčšie ako binárne dáta?
Štandardná vyplnená dĺžka je 4 × ceil(n / 3) znakov. Prefix Data URL pridá viac.
Znižuje kompresia Base64 veľkosť súboru?
Base64 nekomprimuje. gzip alebo Brotli na zakódovanom texte môže časť zmenšiť; réžiu v každom prípade nezmažú.
Zaberá Base64URL menej miesta?
Môže vynechať výplň =, takže reťazec môže byť o 0–2 znaky kratší. Kódovacia štruktúra 3 na 4 je rovnaká.
Mám používať Base64 pri veľkých súboroch?
Len keď potrebujete text. Pri veľkých alebo častých prenosoch je binárna cesta často menšia. Base64 nie je pri API vždy zle.