Tech Help

De ce Base64 face fișierele mai mari?

Base64 mărește de obicei datele binare cu circa o treime. Vezi structura de 3 octeți în 4 caractere, umplutura, costul Data URL și când merită dimensiunea extra.

Răspuns scurt

Base64 mărește de obicei datele binare cu circa o treime pentru că reprezintă fiecare 3 octeți de date binare cu 4 caractere Base64 imprimabile.

Dacă lungimea intrării nu e un multiplu exact de 3, Base64 standard cu umplutură poate adăuga caractere =. Lungimea codificată e 4 × ceil(n / 3), unde n e lungimea originală în octeți.

«Circa 33%» descrie intrări mari. La intrări minuscule procentul poate părea mult mai mare din cauza umpluturii. Base64 nu e compresie. Pentru codificare versus criptare, vezi [Base64 nu este criptare: ce face de fapt](/ro/story/base64-is-not-encryption).

Acest articol explică de ce ieșirea Base64 e mai mare decât octeții originali. Nu e un ghid de securitate. Dacă ai nevoie de codificare versus criptare, folosește Base64 nu este criptare: ce face de fapt.

De ce Base64 are nevoie de mai mult spațiu?

3 octeți sunt 24 de biți. Base64 împarte acei 24 de biți în 4 grupuri de 6 biți. Fiecare grup se mapează pe un caracter Base64, deci 3 octeți de intrare devin 4 caractere de ieșire. Stocat ca 1 octet per caracter ASCII, asta e 4 / 3 ≈ 1.333 — o creștere de circa 33.3%.

  • 3 octeți (24 de biți)
  • Împărțire în 4 grupuri de 6 biți
  • Fiecare grup → un caracter Base64
  • 4 caractere (adesea 4 octeți de text)
Pasul 3 octeți → 4 caractere e costul de dimensiune. Umplutura poate adăuga puțin mai mult la intrări scurte.

Un exemplu simplu, verificabil

Aceste codificări coincid cu Base64 standard cu umplutură.

Man

Man

Base64

TWFu

Man sunt 3 octeți UTF-8/ASCII. TWFu sunt 4 caractere: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello sunt 5 octeți. SGVsbG8= sunt 8 caractere, inclusiv un =. Pe date mici, umplutura face procentul să pară mai mare decât 33%.

Cum calculezi dimensiunea Base64?

Pentru Base64 standard cu umplutură, encodedLength = 4 × ceil(originalBytes / 3).

Octeți originali Caractere Base64
14
24
34
48
58
68

1 sau 2 octeți tot produc 4 caractere. Folosește formula, nu un 33% fix.

Ce înseamnă umplutura «=»?

Marca = arată că ultimul bloc de 3 octeți nu era plin. 1 octet de intrare folosește două caractere =; 2 octeți folosesc unul; 3 octeți nu folosesc niciunul. Umplutura nu e criptare nici o funcție de securitate.

Base64URL folosește mai puțin spațiu?

Base64URL schimbă + în - și / în _, iar Codificare Base64 omite = de la final la codificare. Asta poate scurta șirul cu acele caractere =. Structura 3 octeți → 4 caractere rămâne la fel, deci Base64URL nu e un format binar mai eficient ca spațiu.

De ce intrările minuscule pot crește cu mai mult de 33%?

1 octet → 4 caractere e o creștere de 300% a lungimii. 2 octeți → 4 e 100%. 3 octeți → 4 e circa 33.3%. Pe măsură ce n crește, umplutura contează mai puțin și costul se apropie de circa 33%. Base64 nu e întotdeauna exact 33% mai mare.

De ce un Data URL Base64 e și mai mare?

Un Data URL adaugă un prefix precum data:image/png;base64, înaintea încărcăturii. Pe un fișier minuscul acel prefix poate domina procentul. Codificare Base64 poate emite Base64 brut sau un Data URL; ieșirea Data URL folosește alfabetul standard.

Base64 versus binar: care e mai mic?

Binarul brut e mai eficient ca spațiu pentru transport și stocare. Base64 e mai mare, dar sigur ca text în JSON, e-mail și alte căi doar text. E codificare din binar în text, nu compresie.

Base64 comprimă fișierele?

Nu. Base64 nu e un format de compresie. Textul codificat e de obicei mai mare decât octeții originali. Dacă apoi aplici gzip sau Brotli pe acel text, o parte din redundanță se poate micșora — rezultatul depinde de date și de compresor. gzip nu înlătură complet costul Base64.

Ce se întâmplă dacă Base64 e trecut prin gzip?

Compresia HTTP poate reduce unele tipare repetate din textul Base64. JPEG, PNG sau ZIP se comprimă adesea prost chiar ca octeți bruti, iar Base64-apoi-gzip rămâne dependent de caz. Nu există un procent extra universal după gzip.

Ar trebui să stochezi fișiere ca Base64?

Base64 poate pune binar într-un câmp JSON, un resurs mic în linie, un API doar text, copiere/lipire sau un Data URL. Pentru fișiere mari, stocarea, memoria și dimensiunea încărcăturii cresc. Asta nu e «nu folosi niciodată Base64 pentru fișiere».

De ce Base64 e obișnuit în API-uri JSON?

JSON nu are un tip nativ de binar brut, deci API-urile pun adesea octeții într-un șir Base64. Pentru fișiere mari, multipart/form-data, stocare de obiecte sau o încărcare binară directă pot potrivi mai bine. Nicio alegere nu e întotdeauna cea mai bună.

De ce se folosește Base64 în e-mail?

MIME poate folosi Base64 ca un atașament binar să călătorească drept caractere sigure pentru text. Același cost de dimensiune tot se aplică. E o reprezentare de transport, nu un fișier mai mic.

Când merită dimensiunea extra?

Dimensiunea extra poate merita când binarul trebuie să stea în text, încărcătura e mică, un API cere Base64 sau ai nevoie de un Data URL. Pentru media mari, preferă binarul brut când sistemul permite.

Când ar trebui să eviți Base64?

Sari peste el la fișiere mari, lățime de bandă strânsă, transferuri frecvente sau când o cale binară există deja — situațional, nu «Base64 e o practică proastă».

Lungimi Base64 cu umplutură pe care le poți verifica

Numărul de octeți originali și numărul de caractere Base64 standard cu umplutură:

Octeți originali Caractere Base64
14
24
34
1016
100136
1,0001,336

Toate rândurile urmează 4 × ceil(n / 3). Acestea sunt numere de caractere Base64.

Exemplu: cât de mare va fi un fișier de 1,000 de octeți?

4 × ceil(1000 / 3). ceil(333.333…) = 334, și 4 × 334 = 1336. Deci 1,000 de octeți devin 1,336 de caractere Base64. Stocat ca UTF-8/ASCII, fiecare caracter e de obicei 1 octet — nu trata 1,336 ca un număr exact de octeți în memorie.

Poate Base64 folosi mai multă memorie decât sugerează dimensiunea fișierului?

Unele medii stochează șiruri cu mai mult de 1 octet per caracter, iar codificarea/decodificarea poate ține un buffer și un șir împreună. Folosirea memoriei nu e exact lungimea în caractere.

Un ghid simplu de decizie pe dimensiune

Dacă sistemul acceptă binar brut, preferă-l pentru dimensiune. Dacă e permis doar text, Base64 poate potrivi. Pentru o încărcătură mare, caută o cale de încărcare binară. Pentru text sigur în URL, ia în calcul Base64URL — expansiunea 3-la-4 rămâne.

  • Trebuie trimise date binare
  • Binar brut permis? Preferă binarul pentru dimensiune
  • Câmp doar text? Base64 poate fi potrivit
  • Încărcătură mare? Caută o cale de încărcare binară
  • Ai nevoie de text sigur pentru URL? Ia în calcul Base64URL
  • La intrări mari așteaptă circa 33% mai mult text
Base64 cumpără compatibilitate cu textul. Nu cumpără un fișier mai mic.
Base64 schimbă spațiu pe compatibilitate cu textul

Base64 nu e gândit să facă datele mai mici. Ușurează reprezentarea binarelor în sisteme bazate pe text, iar costul e dimensiune extra.

Codifică sau decodifică Base64 în browser

NEXNARA Codificare Base64 codifică și decodifică text, și poate transforma un fișier în Base64 sau Data URL și readuce Base64 înapoi într-un fișier.

Textul merge pe octeți UTF-8, apoi Base64 — nu doar ASCII. Alege Standard sau Base64URL. Ieșirea de fișier poate fi Base64 brut sau un Data URL (alfabet standard). Intrarea invalidă e respinsă. Octeții care nu sunt UTF-8 trebuie spre fișier, nu spre decodificare ca text.

Fișierele peste 10 MB pot încetini fila (avertisment). Fișierele peste 32 MB sunt blocate.

Codificarea și decodificarea se întâmplă în browserul vostru. Fișierul nu e trimis la un server NEXNARA pentru acest instrument. Reclamele și alte funcții ale site-ului tot folosesc rețeaua.

Lipește text sau un fișier în Codificare Base64 și compară octeții originali cu lungimea codificată.

FAQ

De ce Base64 mărește dimensiunea fișierului?

Mapează 3 octeți (24 de biți) pe 4 caractere (4 × 6 biți). Stocat ca text, asta e circa o treime mai mult la intrări mari.

Base64 e întotdeauna cu 33% mai mare?

Nu. Intrările mari se apropie de circa 33.3%. Intrările minuscule pot crește mai mult din cauza umpluturii. Folosește 4 × ceil(n / 3).

Cu cât e Base64 mai mare decât binarul?

Lungimea standard cu umplutură e 4 × ceil(n / 3) caractere. Un prefix Data URL adaugă și mai mult.

Compresia Base64 reduce dimensiunea fișierului?

Base64 nu comprimă. gzip sau Brotli pe textul codificat pot micșora o parte; nu șterg costul în fiecare caz.

Base64URL folosește mai puțin spațiu?

Poate omite umplutura =, deci șirul poate fi mai scurt cu 0–2 caractere. Structura de codificare 3-la-4 e aceeași.

Ar trebui să folosesc Base64 pentru fișiere mari?

Doar dacă ai nevoie de text. Pentru transferuri mari sau frecvente, o cale binară e adesea mai mică. Base64 nu e întotdeauna greșit pentru API.