Tech Help

Proč Base64 zvětšuje soubory?

Base64 obvykle zvětší binární data asi o třetinu. Podívejte se na strukturu 3 bajty na 4 znaky, výplň, režii Data URL a kdy se extra velikost vyplatí.

Krátká odpověď

Base64 obvykle zvětší binární data asi o třetinu, protože každých 3 bajty binárních dat reprezentuje 4 tisknutelnými znaky Base64.

Pokud délka vstupu není přesný násobek 3, standardní vyplněné Base64 může přidat znaky =. Zakódovaná délka je 4 × ceil(n / 3), kde n je původní počet bajtů.

„Asi 33 %“ popisuje velké vstupy. U drobných vstupů může výplň vypadat jako mnohem větší procento. Base64 není komprese. Pro kódování versus šifrování viz [Base64 není šifrování: co skutečně dělá](/cs/story/base64-is-not-encryption).

Tento článek vysvětluje, proč je výstup Base64 větší než původní bajty. Není to bezpečnostní příručka. Potřebujete-li kódování versus šifrování, použijte Base64 není šifrování: co skutečně dělá.

Proč Base64 potřebuje více místa?

3 bajty jsou 24 bitů. Base64 rozdělí těchto 24 bitů do 4 skupin po 6 bitech. Každá skupina se mapuje na jeden znak Base64, takže 3 vstupní bajty se stanou 4 výstupními znaky. Uloženo jako 1 bajt na ASCII znak to je 4 / 3 ≈ 1,333 — asi 33,3% nárůst.

  • 3 bajty (24 bitů)
  • Rozdělení do 4 skupin po 6 bitech
  • Každá skupina → jeden znak Base64
  • 4 znaky (často 4 bajty textu)
Krok 3 bajty → 4 znaky je cena za velikost. Výplň může u krátkých vstupů přidat trochu víc.

Jednoduchý, ověřitelný příklad

Tato kódování odpovídají standardnímu vyplněné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 bajtů. SGVsbG8= je 8 znaků včetně jednoho =. U malých dat výplň způsobí, že procento vypadá větší než 33 %.

Jak spočítat velikost Base64?

Pro standardní vyplněné Base64 platí encodedLength = 4 × ceil(originalBytes / 3).

Původní bajty Znaky Base64
14
24
34
48
58
68

1 nebo 2 bajty stále dají 4 znaky. Použijte vzorec, ne pevných 33 %.

Co znamená výplň „=“?

Znak = ukazuje, že poslední blok 3 bajtů nebyl plný. 1 vstupní bajt použije dvě =; 2 bajty jedno; 3 bajty žádné. Výplň není šifrování ani bezpečnostní funkce.

Zabírá Base64URL méně místa?

Base64URL mění + na - a / na _ a Kódování Base64 při kódování vynechává koncové =. To může zkrátit řetězec o tyto =. Struktura 3 bajty → 4 znaky zůstává stejná, takže Base64URL není prostorově úspornější binární formát.

Proč mohou drobné vstupy narůst o víc než 33 %?

1 bajt → 4 znaky je 300% nárůst délky. 2 bajty → 4 je 100 %. 3 bajty → 4 je asi 33,3 %. Jak n roste, výplň méně záleží a režie se blíží asi 33 %. Base64 není vždy přesně o 33 % větší.

Proč je Base64 Data URL ještě větší?

Data URL přidá před užitečná data prefix jako data:image/png;base64,. U maličkého souboru může prefix ovládnout procento. Kódování Base64 umí vydat surové Base64 nebo Data URL; výstup Data URL používá standardní abecedu.

Base64 vs binárně: co je menší?

Surová binární data jsou prostorově úspornější pro přenos i úložiště. Base64 je větší, ale textově bezpečné v JSON, e-mailu a dalších jen-textových cestách. Jde o kódování binárních dat do textu, ne o kompresi.

Komprimuje Base64 soubory?

Ne. Base64 není kompresní formát. Zakódovaný text je obvykle větší než původní bajty. Když na ten text později použijete gzip nebo Brotli, část redundance se může zmenšit—výsledek závisí na datech a kompresoru. gzip neodstraní režii Base64 úplně.

Co se stane, když se Base64 gzipuje?

HTTP komprese může zmenšit některé opakující se vzory v textu Base64. JPEG, PNG nebo ZIP se často špatně komprimují i jako surové bajty a Base64-pak-gzip je stále závislé na případě. Po gzip neexistuje univerzální extra procento.

Měli byste ukládat soubory jako Base64?

Base64 se hodí na binární data v poli JSON, malý vložený zdroj, textové API, kopírovat/vložit nebo Data URL. U velkých souborů rostou úložiště, paměť i užitečná data. To neznamená „nikdy nepoužívejte Base64 na soubory“.

Proč je Base64 běžné v JSON API?

JSON nemá nativní surový binární typ, takže API často vkládají bajty do řetězce Base64. U velkých souborů se lépe hodí multipart/form-data, objektové úložiště nebo přímé binární nahrání. Ani jedna volba není vždy nejlepší.

Proč se Base64 používá v e-mailu?

MIME může použít Base64, aby binární příloha cestovala jako textově bezpečné znaky. Stejná režie velikosti platí. Jde o transportní reprezentaci, ne o menší soubor.

Kdy se extra velikost vyplatí?

Extra velikost se může vyplatit, když binární data musí být v textu, užitečná data jsou malá, API vyžaduje Base64, nebo potřebujete Data URL. U velkých médií dávejte přednost surovým binárním datům, pokud to systém dovolí.

Kdy byste se měli Base64 vyhnout?

Přeskočte ho u velkých souborů, úzké šířky pásma, častých přenosů nebo když už existuje binární cesta—situační, ne „Base64 je špatná praxe“.

Délky vyplněného Base64, které můžete ověřit

Původní počty bajtů a počty znaků standardního vyplněného Base64:

Původní bajty Znaky Base64
14
24
34
1016
100136
1,0001,336

Všechny řádky splňují 4 × ceil(n / 3). Jde o počty znaků Base64.

Příklad: Jak velký bude soubor o 1 000 bajtech?

4 × ceil(1000 / 3). ceil(333.333…) = 334 a 4 × 334 = 1336. Tedy 1 000 bajtů se stane 1 336 znaky Base64. Uloženo jako UTF-8/ASCII je každý znak obvykle 1 bajt—neberte 1 336 jako přesný počet bajtů v paměti.

Může Base64 použít víc paměti, než naznačuje velikost souboru?

Některá běhová prostředí ukládají řetězce s víc než 1 bajtem na znak a kódování/dekódování může držet buffer i řetězec najednou. Spotřeba paměti není přesně délka znaků.

Jednoduchý průvodce rozhodnutím o velikosti

Pokud systém přijímá surová binární data, dejte jim přednost kvůli velikosti. Pokud je povolen jen text, Base64 se může hodit. U velkého nákladu hledejte binární nahrávací cestu. Pro text bezpečný v URL zvažte Base64URL—rozšíření 3 na 4 zůstává.

  • Je třeba odeslat binární data
  • Surová binární data povolená? Preferujte binární kvůli velikosti
  • Jen textové pole? Base64 může být vhodné
  • Velký náklad? Hledejte binární nahrání
  • Text bezpečný v URL? Zvažte Base64URL
  • U velkých vstupů čekejte asi o 33 % víc textu
Base64 kupuje textovou kompatibilitu. Nekupuje menší soubor.
Base64 vyměňuje místo za textovou kompatibilitu

Base64 není navrženo, aby data zmenšovalo. Usnadňuje reprezentaci binárních dat v textových systémech a cenou je extra velikost.

Kódujte nebo dekódujte Base64 v prohlížeči

NEXNARA Kódování Base64 kóduje a dekóduje text a umí z souboru udělat Base64 nebo Data URL a z Base64 zase soubor.

Text používá bajty UTF-8, pak Base64—ne jen ASCII. Zvolte Standard nebo Base64URL. Výstup souboru může být surové Base64 nebo Data URL (standardní abeceda). Neplatný vstup se odmítne. Bajty, které nejsou UTF-8, potřebují režim souboru, ne textové dekódování.

Soubory nad 10 MB mohou kartu zpomalit (varování). Soubory nad 32 MB se zablokují.

Kódování a dekódování probíhá ve vašem prohlížeči. Soubor se u tohoto nástroje neposílá na server NEXNARA. Reklamy a další funkce webu stále používají síť.

Vložte text nebo soubor do Kódování Base64 a porovnejte původní bajty se zakódovanou délkou.

FAQ

Proč Base64 zvětšuje velikost souboru?

Mapuje 3 bajty (24 bitů) na 4 znaky (4 × 6 bitů). Uloženo jako text je to u velkých vstupů asi o třetinu víc.

Je Base64 vždy o 33 % větší?

Ne. Velké vstupy se blíží asi 33,3 %. Drobné vstupy mohou narůst víc kvůli výplni. Použijte 4 × ceil(n / 3).

O kolik je Base64 větší než binární data?

Standardní vyplněná délka je 4 × ceil(n / 3) znaků. Prefix Data URL přidá víc.

Snižuje komprese Base64 velikost souboru?

Base64 nekomprimuje. gzip nebo Brotli na zakódovaném textu může část zmenšit; režii v každém případě nesmažou.

Zabírá Base64URL méně místa?

Může vynechat výplň =, takže řetězec může být o 0–2 znaky kratší. Kódovací struktura 3 na 4 je stejná.

Mám používat Base64 u velkých souborů?

Jen když potřebujete text. U velkých nebo častých přenosů je binární cesta často menší. Base64 není u API vždy špatně.