Tech Help

Hoekom maak Base64 lêers groter?

Base64 maak binêre data gewoonlik ongeveer ’n derde groter. Sien die 3-greep-na-4-karakter-struktuur, vulling, Data URL-oorhoofse koste en wanneer daardie ekstra grootte die moeite werd is.

Kort antwoord

Base64 maak binêre data gewoonlik ongeveer ’n derde groter omdat dit elke 3 grepe binêre data met 4 drukbare Base64-karakters voorstel.

As die invoerlengte nie ’n presiese veelvoud van 3 is nie, kan standaard gevulde Base64 = karakters byvoeg. Die gekodeerde lengte is 4 × ceil(n / 3), waar n die oorspronklike greepgetal is.

«Ongeveer 33%» beskryf groot invoer. Piepklein invoer kan weens vulling soos ’n veel groter persentasie lyk. Base64 is nie kompressie nie. Vir kodering teenoor enkripsie, sien [Base64 is nie enkripsie nie: wat dit werklik doen](/af/story/base64-is-not-encryption).

Hierdie artikel verduidelik hoekom Base64-uitvoer groter is as die oorspronklike grepe. Dit is nie ’n sekuriteitsgids nie. As jy kodering teenoor enkripsie nodig het, gebruik Base64 is nie enkripsie nie: wat dit werklik doen.

Hoekom het Base64 meer spasie nodig?

3 grepe is 24 bisse. Base64 verdeel daardie 24 bisse in 4 groepe van 6 bisse. Elke groep pas by een Base64-karakter, dus word 3 invoergrepe 4 uitvoerkarakters. Gestoor as 1 greep per ASCII-karakter is dit 4 / 3 ≈ 1.333 — ongeveer ’n 33.3%-toename.

  • 3 grepe (24 bisse)
  • Verdeel in 4 groepe van 6 bisse
  • Elke groep → een Base64-karakter
  • 4 karakters (dikwels 4 grepe teks)
Die stap van 3 grepe → 4 karakters is die groottetaks. Vulling kan op kort invoer ’n bietjie meer byvoeg.

’n Eenvoudige, nagaanbare voorbeeld

Hierdie koderings stem ooreen met standaard gevulde Base64.

Man

Man

Base64

TWFu

Man is 3 UTF-8/ASCII-grepe. TWFu is 4 karakters: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello is 5 grepe. SGVsbG8= is 8 karakters, insluitend een =. Op klein data laat vulling die persentasie groter as 33% lyk.

Hoe bereken jy Base64-grootte?

Vir standaard gevulde Base64 is encodedLength = 4 × ceil(originalBytes / 3).

Oorspronklike grepe Base64-karakters
14
24
34
48
58
68

1 of 2 grepe lewer steeds 4 karakters. Gebruik die formule, nie ’n vaste 33% nie.

Wat beteken die «=»-vulling?

Die = teken wys dat die laaste 3-greep-blok nie vol was nie. 1 invoergreep gebruik twee = karakters; 2 grepe gebruik een; 3 grepe gebruik geen. Vulling is nie enkripsie of ’n sekuriteitskenmerk nie.

Gebruik Base64URL minder spasie?

Base64URL verander + na - en / na _, en Kodeer Base64 laat agterste = weg by kodering. Dit kan die string met daardie = karakters verkort. Die 3-greep → 4-karakter-struktuur bly dieselfde, dus is Base64URL nie ’n meer spasiedoeltreffende binêre formaat nie.

Hoekom kan piepklein invoer met meer as 33% groei?

1 greep → 4 karakters is ’n 300%-toename in lengte. 2 grepe → 4 is 100%. 3 grepe → 4 is ongeveer 33.3%. Soos n groei, tel vulling minder en nader die oorhoofse koste ongeveer 33%. Base64 is nie altyd presies 33% groter nie.

Hoekom is ’n Base64-Data-URL nóg groter?

’n Data URL voeg ’n voorvoegsel soos data:image/png;base64, voor die vrag by. Op ’n piepklein lêer kan daardie voorvoegsel die persentasie oorheers. Kodeer Base64 kan rou Base64 of ’n Data URL uitstuur; Data URL-uitvoer gebruik die standaardalfabet.

Base64 teenoor binêr: watter is kleiner?

Rou binêr is spasiedoeltreffender vir vervoer en berging. Base64 is groter, maar teksveilig in JSON, e-pos en ander slegs-teks-paaie. Dit is binêr-na-teks-kodering, nie kompressie nie.

Komprimeer Base64 lêers?

Nee. Base64 is nie ’n kompressieformaat nie. Die gekodeerde teks is gewoonlik groter as die oorspronklike grepe. As jy later gzip of Brotli op daardie teks toepas, kan sommige herhaling krimp—resultate hang van die data en die kompressor af. gzip verwyder nie Base64-oorhoofse koste heeltemal nie.

Wat gebeur as Base64 gzip kry?

HTTP-kompressie kan sommige herhaalde patrone in Base64-teks verminder. JPEG, PNG of ZIP komprimeer dikwels swak selfs as rou grepe, en Base64-dan-gzip bly gevalafhanklik. Daar is geen universele ekstra persentasie ná gzip nie.

Moet jy lêers as Base64 stoor?

Base64 kan binêr in ’n JSON-veld, ’n klein inlyn-bate, ’n slegs-teks-API, kopieer/plak of ’n Data URL inpas. Vir groot lêers groei berging, geheue en vraggrootte almal. Dit is nie «moet nooit Base64 vir lêers gebruik nie».

Hoekom is Base64 algemeen in JSON-API’s?

JSON het geen inheemse rou-binêre tipe nie, dus sit API’s dikwels grepe in ’n Base64-string. Vir groot lêers kan multipart/form-data, objekberging of ’n direkte binêre oplaai beter pas. Geen keuse is altyd die beste nie.

Hoekom word Base64 in e-pos gebruik?

MIME kan Base64 gebruik sodat ’n binêre aanhangsel as teksveilige karakters reis. Dieselfde groottetaks geld steeds. Dit is ’n vervoervoorstelling, nie ’n kleiner lêer nie.

Wanneer is die ekstra grootte die moeite werd?

Die ekstra grootte kan die moeite werd wees wanneer binêr in teks moet sit, die vrag klein is, ’n API Base64 vereis, of jy ’n Data URL nodig het. Vir groot media, verkies rou binêr wanneer die stelsel dit toelaat.

Wanneer moet jy Base64 vermy?

Slaan dit oor vir groot lêers, nou bandwydte, gereelde oordragte, of wanneer ’n binêre pad reeds bestaan—situasioneel, nie «Base64 is slegte praktyk» nie.

Gevulde Base64-lengtes wat jy kan nagaan

Oorspronklike greepgetalle en standaard gevulde Base64-karaktergetalle:

Oorspronklike grepe Base64-karakters
14
24
34
1016
100136
1,0001,336

Alle rye volg 4 × ceil(n / 3). Dit is Base64-karaktergetalle.

Voorbeeld: hoe groot word ’n 1,000-greep-lêer?

4 × ceil(1000 / 3). ceil(333.333…) = 334, en 4 × 334 = 1336. Dus word 1,000 grepe 1,336 Base64-karakters. Gestoor as UTF-8/ASCII is elke karakter gewoonlik 1 greep—moenie 1,336 as ’n presiese greepgetal in geheue behandel nie.

Kan Base64 meer geheue gebruik as wat die lêergrootte suggereer?

Sommige looptye stoor stringe met meer as 1 greep per karakter, en kodeer/dekodeer kan ’n buffer en ’n string saam hou. Geheuegebruik is nie presies die karakterlengte nie.

’n Eenvoudige groottetbesluitgids

As die stelsel rou binêr aanvaar, verkies dit vir grootte. As slegs teks toegelaat word, kan Base64 pas. Vir ’n groot vrag, soek ’n binêre oplaai-pad. Vir URL-veilige teks, oorweeg Base64URL—die 3-na-4-uitsetting bly.

  • Moet binêre data stuur
  • Rou binêr toegelaat? Verkies binêr vir grootte
  • Slegs-teks-veld? Base64 kan gepas wees
  • Groot vrag? Soek ’n binêre oplaai-pad
  • URL-veilige teks nodig? Oorweeg Base64URL
  • Verwag ongeveer 33% meer teks op groot invoer
Base64 koop tekversoenbaarheid. Dit koop nie ’n kleiner lêer nie.
Base64 ruil spasie vir tekversoenbaarheid

Base64 is nie ontwerp om data kleiner te maak nie. Dit maak binêr makliker om in teksgebaseerde stelsels voor te stel, en die koste is ekstra grootte.

Kodeer of dekodeer Base64 in jou blaaier

NEXNARA Kodeer Base64 kodeer en dekodeer teks, en kan ’n lêer in Base64 of ’n Data URL omskep en Base64 terug in ’n lêer draai.

Teks gebruik UTF-8-grepe, dan Base64—nie net ASCII nie. Kies Standard of Base64URL. Lêeruitvoer kan rou Base64 of ’n Data URL wees (standaardalfabet). Ongeldige invoer word verwerp. Nie-UTF-8-grepe het Na lêer nodig, nie teksdekodeer nie.

Lêers oor 10 MB kan die oortjie vertraag (waarskuwing). Lêers oor 32 MB word geblokkeer.

Kodering en dekodering gebeur in jou blaaier. Die lêer word nie na ’n NEXNARA-bediener vir hierdie hulpmiddel gestuur nie. Advertensies en ander werfkenmerke gebruik steeds die netwerk.

Plak teks of ’n lêer in Kodeer Base64 en vergelyk oorspronklike grepe met die gekodeerde lengte.

FAQ

Hoekom vergroot Base64 lêergrootte?

Dit karteer 3 grepe (24 bisse) na 4 karakters (4 × 6 bisse). Gestoor as teks is dit ongeveer ’n derde meer vir groot invoer.

Is Base64 altyd 33% groter?

Nee. Groot invoer nader ongeveer 33.3%. Piepklein invoer kan weens vulling meer groei. Gebruik 4 × ceil(n / 3).

Hoeveel groter is Base64 as binêr?

Standaard gevulde lengte is 4 × ceil(n / 3) karakters. ’n Data URL-voorvoegsel voeg meer by.

Verminder Base64-kompressie lêergrootte?

Base64 komprimeer nie. Gzip of Brotli op die gekodeerde teks kan van dit krimp; hulle vee nie die oorhoofse koste in elke geval uit nie.

Gebruik Base64URL minder spasie?

Dit kan = vulling weglaat, dus kan die string 0–2 karakters korter wees. Die 3-na-4-koderingsstruktuur is dieselfde.

Moet ek Base64 vir groot lêers gebruik?

Net as jy teks nodig het. Vir groot of gereelde oordragte is ’n binêre pad dikwels kleiner. Base64 is nie altyd verkeerd vir API’s nie.