Tech Help
Zakaj Base64 poveča datoteke?
Base64 običajno poveča binarne podatke za približno tretjino. Oglejte si zgradbo 3 bajti v 4 znake, polnilo, strošek Data URL in kdaj je dodatna velikost vredna.
Base64 običajno poveča binarne podatke za približno tretjino, ker vsake 3 bajte binarnih podatkov predstavi s 4 natisljivimi znaki Base64.
Če dolžina vnosa ni točen večkratnik 3, lahko standardni Base64 s polnilom doda znake =. Kodirana dolžina je 4 × ceil(n / 3), kjer je n izvirna dolžina v bajtih.
«Približno 33 %» opisuje velike vnose. Pri drobnih vnosih je lahko odstotek videti precej večji zaradi polnila. Base64 ni stiskanje. Za kodiranje proti šifriranju glejte [Base64 ni šifriranje: kaj v resnici dela](/sl/story/base64-is-not-encryption).
Ta članek pojasni, zakaj je izhod Base64 večji od izvirnih bajtov. Ni varnostni vodič. Če potrebujete kodiranje proti šifriranju, uporabite Base64 ni šifriranje: kaj v resnici dela.
Zakaj Base64 potrebuje več prostora?
3 bajti so 24 bitov. Base64 te 24 bite razdeli v 4 skupine po 6 bitov. Vsaka skupina se preslika v en znak Base64, zato 3 vhodni bajti postanejo 4 izhodni znaki. Shranjeno kot 1 bajt na znak ASCII, to je 4 / 3 ≈ 1.333 — povečanje za približno 33.3 %.
- 3 bajti (24 bitov)
- Razdelitev v 4 skupine po 6 bitov
- Vsaka skupina → en znak Base64
- 4 znaki (pogosto 4 bajti besedila)
Preprost, preverljiv primer
Ta kodiranja se ujemajo s standardnim Base64 s polnilom.
Man
Man
Base64
TWFu
Man je 3 bajti UTF-8/ASCII. TWFu je 4 znaki: 3 → 4.
Hello
Hello
Base64
SGVsbG8=
Hello je 5 bajtov. SGVsbG8= je 8 znakov, vključno z enim =. Pri majhnih podatkih polnilo naredi, da je odstotek videti večji od 33 %.
Kako izračunate velikost Base64?
Za standardni Base64 s polnilom, encodedLength = 4 × ceil(originalBytes / 3).
| Izvirni bajti | Znaki Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 8 |
| 5 | 8 |
| 6 | 8 |
1 ali 2 bajta še vedno dasta 4 znake. Uporabite formulo, ne stalnih 33 %.
Kaj pomeni polnilo «=»?
Oznaka = pokaže, da zadnji blok 3 bajtov ni bil poln. 1 vhodni bajt uporabi dva znaka =; 2 bajta uporabita enega; 3 bajti ne uporabijo nobenega. Polnilo ni šifriranje niti varnostna funkcija.
Ali Base64URL porabi manj prostora?
Base64URL spremeni + v - in / v _, Kodiranje Base64 pa pri kodiranju izpusti končne =. To lahko niz skrajša za te znake =. Zgradba 3 bajti → 4 znaki ostane enaka, zato Base64URL ni prostorsko učinkovitejši binarni format.
Zakaj lahko drobni vnosi zrastejo za več kot 33 %?
1 bajt → 4 znaki je 300 % povečanje dolžine. 2 bajta → 4 je 100 %. 3 bajti → 4 je približno 33.3 %. Ko n raste, polnilo manj šteje in strošek se približa približno 33 %. Base64 ni vedno točno 33 % večji.
Zakaj je Base64 Data URL še večji?
Data URL pred breme doda predpono, na primer data:image/png;base64,. Pri drobni datoteki lahko ta predpona prevladuje v odstotku. Kodiranje Base64 lahko izpiše surovi Base64 ali Data URL; izhod Data URL uporablja standardno abecedo.
Base64 proti binarnemu: kaj je manjše?
Surovi binarni podatki so prostorsko učinkovitejši za prenos in shranjevanje. Base64 je večji, a varen kot besedilo v JSON, e-pošti in drugih poteh samo za besedilo. To je kodiranje binarnega v besedilo, ne stiskanje.
Ali Base64 stiska datoteke?
Ne. Base64 ni format stiskanja. Kodirano besedilo je običajno večje od izvirnih bajtov. Če nato na to besedilo uporabite gzip ali Brotli, se lahko del odvečnosti skrči — rezultat je odvisen od podatkov in stiskalnika. gzip popolnoma ne odstrani stroška Base64.
Kaj se zgodi, če Base64 stisnemo z gzip?
Stiskanje HTTP lahko zmanjša nekatere ponavljajoče se vzorce v besedilu Base64. JPEG, PNG ali ZIP se pogosto slabo stisnejo tudi kot surovi bajti, in Base64-nato-gzip je še vedno odvisen od primera. Po gzip ni univerzalnega dodatnega odstotka.
Ali naj datoteke shranjujete kot Base64?
Base64 lahko binarno spravi v polje JSON, majhen vdelan vir, API samo za besedilo, kopiranje/lepljenje ali Data URL. Pri velikih datotekah rastejo shramba, pomnilnik in velikost bremena. To ni «nikoli ne uporabljajte Base64 za datoteke».
Zakaj je Base64 pogost v JSON API-jih?
JSON nima vgrajenega tipa surovih binarnih podatkov, zato API-ji bajte pogosto položijo v niz Base64. Za velike datoteke lahko bolje ustrezajo multipart/form-data, shranjevanje objektov ali neposredni binarni prenos. Nobena izbira ni vedno najboljša.
Zakaj se Base64 uporablja v e-pošti?
MIME lahko uporabi Base64, da binarna priloga potuje kot znaki, varni za besedilo. Isti strošek velikosti še vedno velja. To je transportna predstavitev, ne manjša datoteka.
Kdaj je dodatna velikost vredna?
Dodatna velikost je lahko vredna, ko mora binarno živeti znotraj besedila, je breme majhno, API zahteva Base64 ali potrebujete Data URL. Za velike medije raje surove binarne podatke, če sistem to dovoli.
Kdaj se Base64 izogibati?
Preskočite ga pri velikih datotekah, ozki pasovni širini, pogostih prenosih ali ko binarna pot že obstaja — glede na situacijo, ne «Base64 je slaba praksa».
Dolžine Base64 s polnilom, ki jih lahko preverite
Števila izvirnih bajtov in števila znakov standardnega Base64 s polnilom:
| Izvirni bajti | Znaki Base64 |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 10 | 16 |
| 100 | 136 |
| 1,000 | 1,336 |
Vse vrstice sledijo 4 × ceil(n / 3). To so števila znakov Base64.
Primer: kako velika bo datoteka 1,000 bajtov?
4 × ceil(1000 / 3). ceil(333.333…) = 334, in 4 × 334 = 1336. Torej 1,000 bajtov postane 1,336 znakov Base64. Shranjeno kot UTF-8/ASCII, vsak znak je običajno 1 bajt — 1,336 ne obravnavajte kot točno število bajtov v pomnilniku.
Ali lahko Base64 porabi več pomnilnika, kot namiguje velikost datoteke?
Nekatera okolja nize shranjujejo z več kot 1 bajtom na znak, kodiranje/dekodiranje pa lahko hkrati drži medpomnilnik in niz. Poraba pomnilnika ni natanko dolžina v znakih.
Preprost vodič za odločitev o velikosti
Če sistem sprejema surove binarne podatke, jih raje izberite zaradi velikosti. Če je dovoljeno samo besedilo, lahko Base64 ustreza. Za veliko breme poiščite pot binarnega prenosa. Za besedilo, varno v URL, razmislite o Base64URL — razširitev 3-na-4 ostane.
- Treba poslati binarne podatke
- Surovi binarni podatki dovoljeni? Raje binarno zaradi velikosti
- Polje samo za besedilo? Base64 je lahko primeren
- Veliko breme? Poiskati pot binarnega prenosa
- Potrebujete besedilo, varno za URL? Razmisliti o Base64URL
- Pri velikih vnosih pričakovati približno 33 % več besedila
Base64 ni zasnovan, da bi podatke naredil manjše. Olajša predstavitev binarnega znotraj besedilnih sistemov, cena pa je dodatna velikost.
Kodirajte ali dekodirajte Base64 v brskalniku
NEXNARA Kodiranje Base64 kodira in dekodira besedilo ter lahko datoteko spremeni v Base64 ali Data URL in Base64 vrne nazaj v datoteko.
Besedilo gre z bajti UTF-8, nato Base64 — ne samo ASCII. Izberite Standard ali Base64URL. Izhod datoteke je lahko surovi Base64 ali Data URL (standardna abeceda). Neveljaven vnos se zavrne. Bajti, ki niso UTF-8, potrebujejo datoteko, ne besedilnega dekodiranja.
Datoteke nad 10 MB lahko upočasnijo zavihek (opozorilo). Datoteke nad 32 MB so blokirane.
Kodiranje in dekodiranje se zgodita v vašem brskalniku. Datoteka se za to orodje ne pošlje na strežnik NEXNARA. Oglasi in druge funkcije spletnega mesta še vedno uporabljajo omrežje.
Prilepite besedilo ali datoteko v Kodiranje Base64 in primerjajte izvirne bajte s kodirano dolžino.
FAQ
Zakaj Base64 poveča velikost datoteke?
Preslika 3 bajte (24 bitov) v 4 znake (4 × 6 bitov). Shranjeno kot besedilo, to je za velike vnose približno za tretjino več.
Je Base64 vedno 33 % večji?
Ne. Veliki vnosi se približajo približno 33.3 %. Drobni vnosi lahko zaradi polnila zrastejo bolj. Uporabite 4 × ceil(n / 3).
Koliko je Base64 večji od binarnega?
Standardna dolžina s polnilom je 4 × ceil(n / 3) znakov. Predpona Data URL doda še.
Ali stiskanje Base64 zmanjša velikost datoteke?
Base64 ne stiska. gzip ali Brotli na kodiranem besedilu lahko del skrčita; v vsakem primeru ne zbrišeta stroška.
Ali Base64URL porabi manj prostora?
Lahko izpusti polnilo =, zato je niz lahko krajši za 0–2 znaka. Zgradba kodiranja 3-na-4 je enaka.
Ali naj za velike datoteke uporabim Base64?
Samo če potrebujete besedilo. Za velike ali pogoste prenose je binarna pot pogosto manjša. Base64 za API ni vedno napačen.