Tech Help

Pse Base64 i bën skedarët më të mëdhenj?

Base64 zakonisht i bën të dhënat binare rreth një të tretën më të mëdha. Shihni strukturën 3 bajte në 4 shenja, mbushjen, koston e Data URL dhe kur ia vlen madhësia shtesë.

Përgjigje e shkurtër

Base64 zakonisht i bën të dhënat binare rreth një të tretën më të mëdha sepse çdo 3 bajte të dhënash binare i paraqet me 4 shenja Base64 të shtypshme.

Nëse gjatësia e hyrjes nuk është shumëfish i saktë i 3, Base64 standard me mbushje mund të shtojë shenja =. Gjatësia e koduar është 4 × ceil(n / 3), ku n është gjatësia origjinale në bajte.

«Rreth 33%» përshkruan hyrje të mëdha. Te hyrjet e vogla përqindja mund të duket shumë më e lartë për shkak të mbushjes. Base64 nuk është ngjeshje. Për kodim kundrejt fshehtëzimit, shihni [Base64 nuk është fshehtëzim: çfarë bën vërtet](/sq/story/base64-is-not-encryption).

Ky artikull shpjegon pse dalja Base64 është më e madhe se bajtet origjinale. Nuk është udhëzues sigurie. Nëse ju duhet kodim kundrejt fshehtëzimit, përdorni Base64 nuk është fshehtëzim: çfarë bën vërtet.

Pse Base64 i duhet më shumë hapësirë?

3 bajte janë 24 bit. Base64 i ndan ato 24 bit në 4 grupe nga 6 bit. Çdo grup përputhet me një shenjë Base64, kështu 3 bajte hyrjeje bëhen 4 shenja daljeje. Ruajtur si 1 bajt për shenjë ASCII, kjo është 4 / 3 ≈ 1.333 — rritje rreth 33.3%.

  • 3 bajte (24 bit)
  • Ndarje në 4 grupe nga 6 bit
  • Çdo grup → një shenjë Base64
  • 4 shenja (shpesh 4 bajte teksti)
Hapi 3 bajte → 4 shenja është kostoja e madhësisë. Mbushja mund të shtojë pak më shumë te hyrjet e shkurtra.

Një shembull i thjeshtë, i kontrollueshëm

Këto kodime përputhen me Base64 standard me mbushje.

Man

Man

Base64

TWFu

Man janë 3 bajte UTF-8/ASCII. TWFu janë 4 shenja: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello janë 5 bajte. SGVsbG8= janë 8 shenja, përfshirë një =. Te të dhëna të vogla, mbushja e bën përqindjen të duket më e madhe se 33%.

Si llogaritet madhësia e Base64?

Për Base64 standard me mbushje, encodedLength = 4 × ceil(originalBytes / 3).

Bajte origjinale Shenja Base64
14
24
34
48
58
68

1 ose 2 bajte prapë japin 4 shenja. Përdorni formulën, jo 33% të fiksuar.

Çfarë do të thotë mbushja «=»?

Shenja = tregon se blloku i fundit prej 3 bajtesh nuk ishte i plotë. 1 bajt hyrjeje përdor dy shenja =; 2 bajte përdorin një; 3 bajte nuk përdorin asnjë. Mbushja nuk është fshehtëzim as veçori sigurie.

A përdor Base64URL më pak hapësirë?

Base64URL e kthen + në - dhe / në _, dhe Kodim Base64 i lë mënjanë = në fund gjatë kodimit. Kjo mund ta shkurtojë vargun me ato shenja =. Struktura 3 bajte → 4 shenja mbetet e njëjtë, prandaj Base64URL nuk është format binar më i kursyer në hapësirë.

Pse hyrjet e vogla mund të rriten më shumë se 33%?

1 bajt → 4 shenja është rritje 300% e gjatësisë. 2 bajte → 4 është 100%. 3 bajte → 4 është rreth 33.3%. Sa n rritet, mbushja ka më pak rëndësi dhe kostoja afrohet rreth 33%. Base64 nuk është gjithmonë saktësisht 33% më i madh.

Pse një Data URL Base64 është edhe më e madhe?

Një Data URL shton një parashtesë si data:image/png;base64, para ngarkesës. Te një skedar i vogël ajo parashtesë mund ta dominojë përqindjen. Kodim Base64 mund të nxjerrë Base64 të papërpunuar ose Data URL; dalja Data URL përdor alfabetin standard.

Base64 kundrejt binarit: cili është më i vogël?

Të dhënat binare të papërpunuara janë më të kursyera në hapësirë për transport dhe ruajtje. Base64 është më i madh, por i sigurt si tekst në JSON, email dhe rrugë të tjera vetëm tekst. Është kodim nga binari në tekst, jo ngjeshje.

A i ngjesh Base64 skedarët?

Jo. Base64 nuk është format ngjeshjeje. Teksti i koduar zakonisht është më i madh se bajtet origjinale. Nëse më pas zbatoni gzip ose Brotli mbi atë tekst, një pjesë e tepricës mund të tkurret — rezultati varet nga të dhënat dhe ngjeshësi. gzip nuk e heq plotësisht koston e Base64.

Çfarë ndodh nëse Base64 ngjishet me gzip?

Ngjeshja HTTP mund të zvogëlojë disa modele të përsëritura në tekstin Base64. JPEG, PNG ose ZIP shpesh ngjeshen keq edhe si bajte të papërpunuara, dhe Base64-pastaj-gzip mbetet i varur nga rasti. Nuk ka përqindje shtesë universale pas gzip.

A duhet t’i ruani skedarët si Base64?

Base64 mund të fusë binar në një fushë JSON, një burim të vogël të brendshëm, një API vetëm tekst, kopjim/ngjitje ose Data URL. Për skedarë të mëdhenj rriten ruajtja, memoria dhe madhësia e ngarkesës. Kjo nuk është «mos e përdorni kurrë Base64 për skedarë».

Pse Base64 është i zakonshëm në API JSON?

JSON nuk ka tip nativ të binarit të papërpunuar, prandaj API shpesh i vënë bajtet në një varg Base64. Për skedarë të mëdhenj mund të përshtaten më mirë multipart/form-data, ruajtja e objekteve ose ngarkim i drejtpërdrejtë binar. Asnjë zgjedhje nuk është gjithmonë më e mira.

Pse përdoret Base64 në email?

MIME mund të përdorë Base64 që një bashkëngjitje binare të udhëtojë si shenja të sigurta për tekst. E njëjta kosto madhësie vazhdon të vlejë. Është paraqitje transporti, jo skedar më i vogël.

Kur ia vlen madhësia shtesë?

Madhësia shtesë mund t’ia vlejë kur binari duhet të rrijë brenda tekstit, ngarkesa është e vogël, një API kërkon Base64 ose ju duhet një Data URL. Për media të mëdha, preferoni binar të papërpunuar kur sistemi e lejon.

Kur duhet ta shmangni Base64?

Anashkalojeni për skedarë të mëdhenj, gjerësi bande të ngushtë, transmetime të shpeshta, ose kur një rrugë binare tashmë ekziston — sipas situatës, jo «Base64 është praktikë e keqe».

Gjatësi Base64 me mbushje që mund t’i kontrolloni

Numrat e bajteve origjinale dhe numrat e shenjave të Base64 standard me mbushje:

Bajte origjinale Shenja Base64
14
24
34
1016
100136
1,0001,336

Të gjitha rreshtat ndjekin 4 × ceil(n / 3). Këta janë numra shenjash Base64.

Shembull: sa i madh bëhet një skedar 1,000 bajtësh?

4 × ceil(1000 / 3). ceil(333.333…) = 334, dhe 4 × 334 = 1336. Pra 1,000 bajte bëhen 1,336 shenja Base64. Ruajtur si UTF-8/ASCII, çdo shenjë zakonisht është 1 bajt — mos e trajtoni 1,336 si numër të saktë bajtesh në memorie.

A mund të përdorë Base64 më shumë memorie se sa sugjeron madhësia e skedarit?

Disa mjedise i ruajnë vargjet me më shumë se 1 bajt për shenjë, dhe kodimi/dekodimi mund të mbajë një bufer dhe një varg së bashku. Përdorimi i memories nuk është saktësisht gjatësia në shenja.

Një udhëzues i thjeshtë vendimi për madhësinë

Nëse sistemi pranon binar të papërpunuar, preferojeni për madhësi. Nëse lejohet vetëm tekst, Base64 mund të përshtatet. Për ngarkesë të madhe, kërkoni një rrugë ngarkimi binar. Për tekst të sigurt në URL, shqyrtoni Base64URL — zgjerimi 3-në-4 mbetet.

  • Duhet të dërgohen të dhëna binare
  • Lejohet binar i papërpunuar? Prefero binarin për madhësi
  • Fushë vetëm tekst? Base64 mund të jetë i përshtatshëm
  • Ngarkesë e madhe? Kërko rrugë ngarkimi binar
  • Duhet tekst i sigurt për URL? Shqyrto Base64URL
  • Te hyrje të mëdha prit rreth 33% më shumë tekst
Base64 blen përputhshmëri me tekstin. Nuk blen skedar më të vogël.
Base64 shkëmben hapësirë për përputhshmëri me tekstin

Base64 nuk është menduar t’i bëjë të dhënat më të vogla. E lehtëson paraqitjen e binarit brenda sistemeve me tekst, dhe kostoja është madhësi shtesë.

Kodoni ose dekodoni Base64 në shfletues

NEXNARA Kodim Base64 kodon dhe dekodon tekst, dhe mund ta kthejë një skedar në Base64 ose Data URL dhe ta kthejë Base64 përsëri në skedar.

Teksti shkon me bajte UTF-8, pastaj Base64 — jo vetëm ASCII. Zgjidhni Standard ose Base64URL. Dalja e skedarit mund të jetë Base64 i papërpunuar ose Data URL (alfabet standard). Hyrja e pavlefshme refuzohet. Bajtet jo UTF-8 duhen te skedari, jo te dekodimi si tekst.

Skedarët mbi 10 MB mund ta ngadalësojnë skedën (paralajmërim). Skedarët mbi 32 MB bllokohen.

Kodimi dhe dekodimi ndodhin në shfletuesin tuaj. Skedari nuk dërgohet te një server NEXNARA për këtë mjet. Reklamat dhe veçoritë e tjera të sitit ende përdorin rrjetin.

Ngjitni tekst ose një skedar në Kodim Base64 dhe krahasoni bajtet origjinale me gjatësinë e koduar.

FAQ

Pse Base64 e rrit madhësinë e skedarit?

Harton 3 bajte (24 bit) në 4 shenja (4 × 6 bit). Ruajtur si tekst, kjo është rreth një e treta më shumë për hyrje të mëdha.

A është Base64 gjithmonë 33% më i madh?

Jo. Hyrjet e mëdha i afrohen rreth 33.3%. Hyrjet e vogla mund të rriten më shumë për shkak të mbushjes. Përdorni 4 × ceil(n / 3).

Sa më i madh është Base64 se binari?

Gjatësia standarde me mbushje është 4 × ceil(n / 3) shenja. Një parashtesë Data URL shton më shumë.

A e zvogëlon ngjeshja Base64 madhësinë e skedarit?

Base64 nuk ngjesh. gzip ose Brotli mbi tekstin e koduar mund të tkurrin një pjesë; nuk e fshijnë koston në çdo rast.

A përdor Base64URL më pak hapësirë?

Mund ta lërë mënjanë mbushjen =, prandaj vargu mund të jetë 0–2 shenja më i shkurtër. Struktura e kodimit 3-në-4 është e njëjtë.

A duhet të përdor Base64 për skedarë të mëdhenj?

Vetëm nëse ju duhet tekst. Për transmetime të mëdha ose të shpeshta, një rrugë binare shpesh është më e vogël. Base64 nuk është gjithmonë i gabuar për API.