Tech Help

Zašto Base64 uvećava datoteke?

Base64 obično uveća binarne podatke za oko trećinu. Pogledajte strukturu 3 bajta u 4 znaka, dopunu, trošak Data URL i kada dodatna veličina vrijedi.

Kratak odgovor

Base64 obično uveća binarne podatke za oko trećinu jer svaka 3 bajta binarnih podataka predstavlja s 4 ispisiva Base64 znaka.

Ako duljina ulaza nije točan višekratnik od 3, standardni Base64 s dopunom može dodati znakove =. Kodirana duljina je 4 × ceil(n / 3), gdje je n izvorna duljina u bajtovima.

«Oko 33%» opisuje velike ulaze. Na sitnim ulazima postotak može izgledati znatno veći zbog dopune. Base64 nije kompresija. Za kodiranje naspram šifriranja, vidi [Base64 nije šifriranje: što zapravo radi](/hr/story/base64-is-not-encryption).

Ovaj članak objašnjava zašto je izlaz Base64 veći od izvornih bajtova. Nije vodič za sigurnost. Ako trebate kodiranje naspram šifriranja, upotrijebite Base64 nije šifriranje: što zapravo radi.

Zašto Base64 treba više prostora?

3 bajta su 24 bita. Base64 dijeli tih 24 bita u 4 skupine od 6 bita. Svaka skupina mapira se na jedan Base64 znak, pa 3 ulazna bajta postaju 4 izlazna znaka. Spremljeno kao 1 bajt po ASCII znaku, to je 4 / 3 ≈ 1.333 — povećanje od oko 33.3%.

  • 3 bajta (24 bita)
  • Podjela u 4 skupine od 6 bita
  • Svaka skupina → jedan Base64 znak
  • 4 znaka (često 4 bajta teksta)
Korak 3 bajta → 4 znaka je trošak veličine. Dopuna može dodati malo više na kratkim ulazima.

Jednostavan, provjerljiv primjer

Ova kodiranja odgovaraju standardnom Base64 s dopunom.

Man

Man

Base64

TWFu

Man je 3 UTF-8/ASCII bajta. TWFu je 4 znaka: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello je 5 bajtova. SGVsbG8= je 8 znakova, uključujući jedno =. Na malim podacima dopuna čini da postotak izgleda veći od 33%.

Kako se izračunava veličina Base64?

Za standardni Base64 s dopunom, encodedLength = 4 × ceil(originalBytes / 3).

Izvorni bajtovi Base64 znakovi
14
24
34
48
58
68

1 ili 2 bajta i dalje daju 4 znaka. Upotrijebite formulu, ne fiksnih 33%.

Što znači dopuna «=»?

Oznaka = pokazuje da posljednji blok od 3 bajta nije bio pun. 1 ulazni bajt koristi dva znaka =; 2 bajta koriste jedan; 3 bajta ne koriste nijedan. Dopuna nije šifriranje ni značajka sigurnosti.

Koristi li Base64URL manje prostora?

Base64URL mijenja + u - i / u _, a Kodiranje Base64 izostavlja završne = pri kodiranju. To može skratiti niz za te znakove =. Struktura 3 bajta → 4 znaka ostaje ista, pa Base64URL nije binarni format učinkovitiji po prostoru.

Zašto sitni ulazi mogu porasti više od 33%?

1 bajt → 4 znaka je povećanje duljine od 300%. 2 bajta → 4 je 100%. 3 bajta → 4 je oko 33.3%. Kako n raste, dopuna manje utječe i trošak se približava oko 33%. Base64 nije uvijek točno 33% veći.

Zašto je Base64 Data URL još veći?

Data URL dodaje prefiks poput data:image/png;base64, ispred tereta. Na sitnoj datoteci taj prefiks može dominirati postotkom. Kodiranje Base64 može izdati sirovi Base64 ili Data URL; izlaz Data URL koristi standardnu abecedu.

Base64 naspram binarnog: što je manje?

Sirovi binarni podaci učinkovitiji su po prostoru za prijenos i pohranu. Base64 je veći, ali siguran kao tekst u JSON, e-pošti i drugim putevima samo za tekst. To je kodiranje binarnog u tekst, ne kompresija.

Komprimira li Base64 datoteke?

Ne. Base64 nije format kompresije. Kodirani tekst obično je veći od izvornih bajtova. Ako zatim primijenite gzip ili Brotli na taj tekst, dio viška može se smanjiti — rezultat ovisi o podacima i kompresoru. gzip ne uklanja potpuno trošak Base64.

Što se događa ako se na Base64 primijeni gzip?

HTTP kompresija može smanjiti neke ponovljene obrasce u Base64 tekstu. JPEG, PNG ili ZIP često se loše komprimiraju i kao sirovi bajtovi, a Base64-zatim-gzip i dalje ovisi o slučaju. Nema univerzalnog dodatnog postotka nakon gzip.

Treba li spremati datoteke kao Base64?

Base64 može staviti binarno u JSON polje, mali ugrađeni resurs, API samo za tekst, kopiranje/lijepljenje ili Data URL. Za velike datoteke rastu pohrana, memorija i veličina tereta. To nije «nikad ne koristite Base64 za datoteke».

Zašto je Base64 uobičajen u JSON API-jima?

JSON nema nativni tip sirovih binarnih podataka, pa API-ji često stavljaju bajtove u Base64 niz. Za velike datoteke bolje mogu odgovarati multipart/form-data, pohrana objekata ili izravno binarno učitavanje. Nijedan izbor nije uvijek najbolji.

Zašto se Base64 koristi u e-pošti?

MIME može koristiti Base64 da binarni privitak putuje kao znakovi sigurni za tekst. Isti trošak veličine i dalje vrijedi. To je transportni prikaz, ne manja datoteka.

Kada dodatna veličina vrijedi?

Dodatna veličina može vrijediti kada binarno mora sjediti unutar teksta, teret je mali, API zahtijeva Base64 ili trebate Data URL. Za velike medije preferirajte sirove binarne podatke kada sustav to dopušta.

Kada trebate izbjegavati Base64?

Preskočite ga za velike datoteke, usku širinu pojasa, česte prijenose ili kada binarni put već postoji — situacijski, ne «Base64 je loša praksa».

Duljine Base64 s dopunom koje možete provjeriti

Broj izvornih bajtova i broj znakova standardnog Base64 s dopunom:

Izvorni bajtovi Base64 znakovi
14
24
34
1016
100136
1,0001,336

Svi retci slijede 4 × ceil(n / 3). To su brojevi Base64 znakova.

Primjer: kolika će biti datoteka od 1,000 bajtova?

4 × ceil(1000 / 3). ceil(333.333…) = 334, i 4 × 334 = 1336. Dakle 1,000 bajtova postaju 1,336 Base64 znakova. Spremljeno kao UTF-8/ASCII, svaki znak obično je 1 bajt — ne tretirajte 1,336 kao točan broj bajtova u memoriji.

Može li Base64 koristiti više memorije nego što veličina datoteke sugerira?

Neka okruženja spremaju nizove s više od 1 bajta po znaku, a kodiranje/dekodiranje može držati međuspremnik i niz zajedno. Uporaba memorije nije točno duljina u znacima.

Jednostavan vodič za odluku o veličini

Ako sustav prima sirove binarne podatke, preferirajte ih zbog veličine. Ako je dopušten samo tekst, Base64 može odgovarati. Za veliki teret potražite put binarnog učitavanja. Za tekst siguran u URL, razmotrite Base64URL — proširenje 3-na-4 ostaje.

  • Treba poslati binarne podatke
  • Sirovi binarni podaci dopušteni? Preferirati binarno zbog veličine
  • Polje samo za tekst? Base64 može biti prikladan
  • Veliki teret? Potražiti put binarnog učitavanja
  • Treba tekst siguran za URL? Razmotriti Base64URL
  • Na velikim ulazima očekivati oko 33% više teksta
Base64 kupuje kompatibilnost s tekstom. Ne kupuje manju datoteku.
Base64 mijenja prostor za kompatibilnost s tekstom

Base64 nije osmišljen da podatke učini manjima. Olakšava predstavljanje binarnog unutar tekstualnih sustava, a cijena je dodatna veličina.

Kodirajte ili dekodirajte Base64 u pregledniku

NEXNARA Kodiranje Base64 kodira i dekodira tekst, i može pretvoriti datoteku u Base64 ili Data URL i vratiti Base64 natrag u datoteku.

Tekst ide UTF-8 bajtovima, zatim Base64 — ne samo ASCII. Odaberite Standard ili Base64URL. Izlaz datoteke može biti sirovi Base64 ili Data URL (standardna abeceda). Neispravan ulaz se odbija. Bajtovi koji nisu UTF-8 trebaju ići u datoteku, ne u tekstualno dekodiranje.

Datoteke preko 10 MB mogu usporiti karticu (upozorenje). Datoteke preko 32 MB se blokiraju.

Kodiranje i dekodiranje događaju se u vašem pregledniku. Datoteka se ne šalje na NEXNARA poslužitelj za ovaj alat. Oglasi i druge značajke stranice i dalje koriste mrežu.

Zalijepite tekst ili datoteku u Kodiranje Base64 i usporedite izvorne bajtove s kodiranom duljinom.

FAQ

Zašto Base64 uvećava veličinu datoteke?

Mapira 3 bajta (24 bita) na 4 znaka (4 × 6 bita). Spremljeno kao tekst, to je za oko trećinu više na velikim ulazima.

Je li Base64 uvijek 33% veći?

Ne. Veliki ulazi približavaju se oko 33.3%. Sitni ulazi mogu porasti više zbog dopune. Upotrijebite 4 × ceil(n / 3).

Koliko je Base64 veći od binarnog?

Standardna duljina s dopunom je 4 × ceil(n / 3) znakova. Prefiks Data URL dodaje još.

Smanjuje li kompresija Base64 veličinu datoteke?

Base64 ne komprimira. gzip ili Brotli na kodiranom tekstu mogu smanjiti dio; ne brišu trošak u svakom slučaju.

Koristi li Base64URL manje prostora?

Može izostaviti dopunu =, pa niz može biti kraći za 0–2 znaka. Struktura kodiranja 3-na-4 je ista.

Treba li koristiti Base64 za velike datoteke?

Samo ako trebate tekst. Za velike ili česte prijenose binarni put često je manji. Base64 nije uvijek pogrešan za API.