Tech Help

Per què Base64 fa els fitxers més grans?

Base64 sol fer que les dades binàries ocupin al voltant d'un terç més. Mira l'estructura de 3 bytes a 4 caràcters, el farciment, el cost extra de Data URL i quan val la pena aquesta mida.

Resposta ràpida

Base64 sol fer que les dades binàries ocupin al voltant d'un terç més perquè representa cada 3 bytes de dades binàries amb 4 caràcters Base64 imprimibles.

Si la longitud d'entrada no és un múltiple exacte de 3, el Base64 farcit estàndard pot afegir caràcters =. La longitud codificada és 4 × ceil(n / 3), on n és la longitud original en bytes.

«Un 33%» descriu entrades grans. En entrades minúscules el percentatge pot semblar molt més alt pel farciment. Base64 no és compressió. Per a codificació davant de xifratge, vegeu [Base64 no és xifratge: què fa de debò](/ca/story/base64-is-not-encryption).

Aquest article explica per què la sortida Base64 és més gran que els bytes originals. No és una guia de seguretat. Si necessites codificació davant de xifratge, fes servir Base64 no és xifratge: què fa de debò.

Per què Base64 necessita més espai?

3 bytes són 24 bits. Base64 parteix aquests 24 bits en 4 grups de 6 bits. Cada grup es mapeja a un caràcter Base64, així que 3 bytes d’entrada esdevenen 4 caràcters de sortida. Desat com 1 byte per caràcter ASCII, això és 4 / 3 ≈ 1.333 — un augment d’uns 33.3%.

  • 3 bytes (24 bits)
  • Partir en 4 grups de 6 bits
  • Cada grup → un caràcter Base64
  • 4 caràcters (sovint 4 bytes de text)
El pas de 3 bytes → 4 caràcters és el cost de mida. El farciment pot afegir una mica més en entrades curtes.

Un exemple simple i comprovable

Aquestes codificacions coincideixen amb Base64 farcit estàndard.

Man

Man

Base64

TWFu

Man són 3 bytes UTF-8/ASCII. TWFu són 4 caràcters: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello són 5 bytes. SGVsbG8= són 8 caràcters, inclòs un =. En dades petites, el farciment fa que el percentatge sembli més gran que 33%.

Com es calcula la mida de Base64?

Per a Base64 farcit estàndard, encodedLength = 4 × ceil(originalBytes / 3).

Bytes originals Caràcters Base64
14
24
34
48
58
68

1 o 2 bytes encara produeixen 4 caràcters. Fes servir la fórmula, no un 33% fix.

Què vol dir el farciment «=»?

La marca = indica que l’últim bloc de 3 bytes no era ple. 1 byte d’entrada fa servir dos caràcters =; 2 bytes en fan servir un; 3 bytes no en fan servir cap. El farciment no és xifratge ni una funció de seguretat.

Base64URL ocupa menys espai?

Base64URL canvia + per - i / per _, i Codifica Base64 omet els = finals en codificar. Això pot escurçar la cadena en aquests caràcters =. L’estructura de 3 bytes → 4 caràcters es manté, així que Base64URL no és un format binari més eficient en espai.

Per què les entrades minúscules poden créixer més d’un 33%?

1 byte → 4 caràcters és un augment del 300% en longitud. 2 bytes → 4 és 100%. 3 bytes → 4 és uns 33.3%. A mesura que n creix, el farciment importa menys i el cost extra s’acosta a uns 33%. Base64 no és sempre un 33% més gran.

Per què una Data URL Base64 encara és més gran?

Una Data URL afegeix un prefix com data:image/png;base64, davant de la càrrega. En un fitxer minúscul aquest prefix pot dominar el percentatge. Codifica Base64 pot emetre Base64 cru o una Data URL; la sortida Data URL usa l’alfabet estàndard.

Base64 davant del binari: quin és més petit?

El binari cru és més eficient en espai per al transport i l’emmagatzematge. Base64 és més gran, però segur com a text en JSON, correu i altres camins només de text. És codificació de binari a text, no compressió.

Base64 comprimeix fitxers?

No. Base64 no és un format de compressió. El text codificat sol ser més gran que els bytes originals. Si després hi apliques gzip o Brotli, part de la redundància es pot encongir — el resultat depèn de les dades i del compressor. gzip no elimina del tot el cost extra de Base64.

Què passa si s’aplica gzip a Base64?

La compressió HTTP pot reduir alguns patrons repetits en text Base64. JPEG, PNG o ZIP sovint comprimeixen malament fins i tot com a bytes crus, i Base64-després-gzip continua depenent del cas. No hi ha un percentatge extra universal després de gzip.

Hauries de desar fitxers com a Base64?

Base64 pot encabir binari en un camp JSON, un recurs petit en línia, una API només de text, copiar i enganxar o una Data URL. En fitxers grans, emmagatzematge, memòria i mida de càrrega creixen. Això no és «no facis servir mai Base64 per a fitxers».

Per què Base64 és habitual a les API JSON?

JSON no té un tipus natiu de binari cru, així que les API sovint posen bytes en una cadena Base64. Per a fitxers grans, multipart/form-data, emmagatzematge d’objectes o una pujada binària directa poden encaixar millor. Cap opció no és sempre la millor.

Per què s’usa Base64 al correu?

MIME pot fer servir Base64 perquè un adjunt binari viatgi com a caràcters segurs per al text. El mateix cost extra de mida continua aplicant-se. És una representació de transport, no un fitxer més petit.

Quan val la pena la mida extra?

La mida extra pot valer la pena quan el binari ha de seure dins de text, la càrrega és petita, una API exigeix Base64 o necessites una Data URL. Per a mitjans grans, prefereix binari cru quan el sistema ho permet.

Quan hauries d’evitar Base64?

Salta-te’l en fitxers grans, ample de banda ajustat, transferències freqüents o quan ja existeix un camí binari — situacional, no «Base64 és mala pràctica».

Longituds de Base64 farcit que pots comprovar

Comptes de bytes originals i comptes de caràcters Base64 farcit estàndard:

Bytes originals Caràcters Base64
14
24
34
1016
100136
1,0001,336

Totes les files segueixen 4 × ceil(n / 3). Són comptes de caràcters Base64.

Exemple: de quina mida serà un fitxer de 1,000 bytes?

4 × ceil(1000 / 3). ceil(333.333…) = 334, i 4 × 334 = 1336. Així, 1,000 bytes esdevenen 1,336 caràcters Base64. Desats com UTF-8/ASCII, cada caràcter sol ser 1 byte — no tractis 1,336 com un compte exacte de bytes en memòria.

Pot Base64 usar més memòria del que suggereix la mida del fitxer?

Alguns entorns desen cadenes amb més d’1 byte per caràcter, i codificar/descodificar pot mantenir un búfer i una cadena alhora. L’ús de memòria no és exactament la longitud en caràcters.

Una guia simple per decidir per la mida

Si el sistema accepta binari cru, prefereix-lo per mida. Si només es permet text, Base64 pot encaixar. Per a una càrrega gran, cerca un camí de pujada binària. Per a text segur en URL, considera Base64URL — l’expansió de 3 a 4 es manté.

  • Cal enviar dades binàries
  • Es permet binari cru? Prefereix binari per mida
  • Camp només de text? Base64 pot ser adequat
  • Càrrega gran? Cerca un camí de pujada binària
  • Necessites text segur per a URL? Considera Base64URL
  • Espera uns 33% més de text en entrades grans
Base64 compra compatibilitat amb text. No compra un fitxer més petit.
Base64 canvia espai per compatibilitat amb text

Base64 no està pensat per fer les dades més petites. Facilita representar binari dins de sistemes de text, i el cost és mida extra.

Codifica o descodifica Base64 al navegador

NEXNARA Codifica Base64 codifica i descodifica text, i pot convertir un fitxer en Base64 o una Data URL i tornar Base64 a un fitxer.

El text usa bytes UTF-8 i després Base64 — no només ASCII. Tria Standard o Base64URL. La sortida de fitxer pot ser Base64 cru o una Data URL (alfabet estàndard). L’entrada invàlida es rebutja. Els bytes que no són UTF-8 necessiten anar a fitxer, no descodificar-se com a text.

Els fitxers de més de 10 MB poden alentir la pestanya (avís). Els fitxers de més de 32 MB es bloquegen.

La codificació i la descodificació ocorren al teu navegador. El fitxer no s’envia a un servidor de NEXNARA per a aquesta eina. Els anuncis i altres funcions del lloc segueixen usant la xarxa.

Enganxa text o un fitxer a Codifica Base64 i compara els bytes originals amb la longitud codificada.

FAQ

Per què Base64 augmenta la mida del fitxer?

Mapeja 3 bytes (24 bits) a 4 caràcters (4 × 6 bits). Desat com a text, això és al voltant d’un terç més en entrades grans.

Base64 és sempre un 33% més gran?

No. Les entrades grans s’acosten a uns 33.3%. Les entrades minúscules poden créixer més pel farciment. Fes servir 4 × ceil(n / 3).

Quant més gran és Base64 que el binari?

La longitud farcida estàndard és 4 × ceil(n / 3) caràcters. Un prefix de Data URL n’afegeix més.

La compressió Base64 redueix la mida del fitxer?

Base64 no comprimeix. gzip o Brotli sobre el text codificat poden encongir-ne una part; no esborren el cost extra en tots els casos.

Base64URL ocupa menys espai?

Pot ometre el farciment =, així que la cadena pot ser 0–2 caràcters més curta. L’estructura de codificació de 3 a 4 és la mateixa.

Hauria de fer servir Base64 per a fitxers grans?

Només si necessites text. Per a transferències grans o freqüents, un camí binari sol ser més petit. Base64 no és sempre incorrecte a les API.