Tech Help

Kwa nini Base64 inafanya faili kuwa kubwa?

Base64 kwa kawaida hufanya data ya binary iwe kubwa kwa takriban theluthi. Angalia muundo wa baiti 3 hadi herufi 4, pedi, gharama ya ziada ya Data URL, na wakati ukubwa huo wa ziada unastahili.

Jibu fupi

Base64 kwa kawaida hufanya data ya binary iwe kubwa kwa takriban theluthi kwa sababu inawakilisha kila baiti 3 za data ya binary kwa herufi 4 za Base64 zinazoweza kuchapishwa.

Ikiwa urefu wa ingizo si kizidisho kamili cha 3, Base64 sanifu yenye pedi inaweza kuongeza herufi =. Urefu uliosimbwa ni 4 × ceil(n / 3), ambapo n ni idadi ya baiti asili.

«Takriban 33%» inaelezea ingizo kubwa. Ingizo dogo sana linaweza kuonekana kama asilimia kubwa zaidi kwa sababu ya pedi. Base64 si ukandamizaji. Kwa usimbaji dhidi ya usimbaji fiche, angalia [Base64 si usimbaji fiche: inafanya nini kweli](/sw/story/base64-is-not-encryption).

Makala hii inaeleza kwa nini pato la Base64 ni kubwa kuliko baiti asili. Si mwongozo wa usalama. Ukihitaji usimbaji dhidi ya usimbaji fiche, tumia Base64 si usimbaji fiche: inafanya nini kweli.

Kwa nini Base64 inahitaji nafasi zaidi?

Baiti 3 ni biti 24. Base64 hugawanya biti 24 hizo katika vikundi 4 vya biti 6. Kila kikundi kinaendana na herufi moja ya Base64, kwa hivyo baiti 3 za ingizo huwa herufi 4 za pato. Ikihifadhiwa kama baiti 1 kwa herufi ya ASCII, hiyo ni 4 / 3 ≈ 1.333 — ongezeko la takriban 33.3%.

  • Baiti 3 (biti 24)
  • Gawanya katika vikundi 4 vya biti 6
  • Kila kikundi → herufi moja ya Base64
  • Herufi 4 (mara nyingi baiti 4 za maandishi)
Hatua ya baiti 3 → herufi 4 ndiyo gharama ya ukubwa. Pedi inaweza kuongeza kidogo kwenye ingizo fupi.

Mfano rahisi unaoweza kukaguliwa

Usimbaji huu unaendana na Base64 sanifu yenye pedi.

Man

Man

Base64

TWFu

Man ni baiti 3 za UTF-8/ASCII. TWFu ni herufi 4: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello ni baiti 5. SGVsbG8= ni herufi 8, pamoja na = moja. Kwenye data ndogo, pedi hufanya asilimia ionekane kubwa kuliko 33%.

Ukubwa wa Base64 unahesabiwaje?

Kwa Base64 sanifu yenye pedi, encodedLength = 4 × ceil(originalBytes / 3).

Baiti asili Herufi za Base64
14
24
34
48
58
68

Baiti 1 au 2 bado hutoa herufi 4. Tumia fomula, si 33% thabiti.

Pedi ya «=» inamaanisha nini?

Alama ya = inaonyesha kwamba kizuizi cha mwisho cha baiti 3 hakikujawa. Baiti 1 ya ingizo hutumia herufi mbili za =; baiti 2 hutumia moja; baiti 3 hazitumii. Pedi si usimbaji fiche wala kipengele cha usalama.

Je, Base64URL inatumia nafasi kidogo?

Base64URL inabadilisha + kuwa - na / kuwa _, na Simba Base64 inaacha = za mwisho wakati wa kusimba. Hiyo inaweza kufupisha kamba kwa herufi hizo za =. Muundo wa baiti 3 → herufi 4 unabaki, kwa hivyo Base64URL si umbizo la binary lenye nafasi bora.

Kwa nini ingizo dogo linaweza kukua zaidi ya 33%?

Baiti 1 → herufi 4 ni ongezeko la urefu la 300%. Baiti 2 → 4 ni 100%. Baiti 3 → 4 ni takriban 33.3%. Kadri n inavyokua, pedi inapunguza umuhimu na gharama ya ziada inakaribia takriban 33%. Base64 si kubwa zaidi kwa 33% kila wakati.

Kwa nini Data URL ya Base64 ni kubwa zaidi?

Data URL inaongeza kiambishi awali kama data:image/png;base64, kabla ya mzigo. Kwenye faili ndogo sana kiambishi hicho kinaweza kutawala asilimia. Simba Base64 inaweza kutoa Base64 mbichi au Data URL; pato la Data URL linatumia alfabeti sanifu.

Base64 dhidi ya binary: ipi ndogo?

Binary mbichi ni bora kwa nafasi katika usafirishaji na hifadhi. Base64 ni kubwa, lakini salama kama maandishi katika JSON, barua pepe, na njia nyingine za maandishi tu. Ni usimbaji kutoka binary hadi maandishi, si ukandamizaji.

Je, Base64 inakandamiza faili?

Hapana. Base64 si umbizo la ukandamizaji. Maandishi yaliyosimbwa kwa kawaida ni makubwa kuliko baiti asili. Ukitumia gzip au Brotli baadaye kwenye maandishi hayo, baadhi ya marudio yanaweza kupungua—matokeo yanategemea data na kikandamizaji. gzip haiondoi kabisa gharama ya ziada ya Base64.

Nini hutokea Base64 ikipata gzip?

Ukandamizaji wa HTTP unaweza kupunguza baadhi ya mifumo inayojirudia katika maandishi ya Base64. JPEG, PNG, au ZIP mara nyingi hukandamizwa vibaya hata kama baiti mbichi, na Base64-kisha-gzip bado inategemea kesi. Hakuna asilimia ya ziada ya ulimwengu wote baada ya gzip.

Je, unapaswa kuhifadhi faili kama Base64?

Base64 inaweza kuweka binary katika uga wa JSON, rasilimali ndogo ya ndani, API ya maandishi tu, nakili/bandika, au Data URL. Kwa faili kubwa, hifadhi, kumbukumbu, na ukubwa wa mzigo vyote hukua. Hiyo si «usitumie Base64 kwa faili kamwe».

Kwa nini Base64 ni ya kawaida katika API za JSON?

JSON haina aina asili ya binary mbichi, kwa hivyo API mara nyingi huweka baiti katika kamba ya Base64. Kwa faili kubwa, multipart/form-data, hifadhi ya vitu, au upakiaji wa binary wa moja kwa moja unaweza kufaa zaidi. Hakuna chaguo linalokuwa bora kila wakati.

Kwa nini Base64 inatumika katika barua pepe?

MIME inaweza kutumia Base64 ili kiambatisho cha binary kisafiri kama herufi salama kwa maandishi. Gharama ile ile ya ukubwa bado inatumika. Hii ni uwakilishi wa usafirishaji, si faili ndogo.

Wakati gani ukubwa wa ziada unastahili?

Ukubwa wa ziada unaweza kustahili wakati binary lazima ikae ndani ya maandishi, mzigo ni mdogo, API inahitaji Base64, au unahitaji Data URL. Kwa midia kubwa, pendekeza binary mbichi mfumo unaporuhusu.

Wakati gani unapaswa kuepuka Base64?

Iache kwa faili kubwa, kipimo data finyu, uhamisho wa mara kwa mara, au wakati njia ya binary tayari ipo—kulingana na hali, si «Base64 ni desturi mbaya».

Urefu wa Base64 yenye pedi unaoweza kukaguliwa

Idadi ya baiti asili na idadi ya herufi za Base64 sanifu yenye pedi:

Baiti asili Herufi za Base64
14
24
34
1016
100136
1,0001,336

Safu zote zinafuata 4 × ceil(n / 3). Hizi ni idadi ya herufi za Base64.

Mfano: faili ya baiti 1,000 itakuwa kubwa kiasi gani?

4 × ceil(1000 / 3). ceil(333.333…) = 334, na 4 × 334 = 1336. Kwa hivyo baiti 1,000 huwa herufi 1,336 za Base64. Zikihifadhiwa kama UTF-8/ASCII, kila herufi kwa kawaida ni baiti 1—usiondoe 1,336 kama idadi kamili ya baiti kwenye kumbukumbu.

Je, Base64 inaweza kutumia kumbukumbu zaidi kuliko ukubwa wa faili unavyodokeza?

Mazingira mengine huhifadhi kamba kwa zaidi ya baiti 1 kwa herufi, na kusimba/kufafanua kunaweza kuweka buffer na kamba pamoja. Matumizi ya kumbukumbu si urefu kamili wa herufi.

Mwongozo rahisi wa uamuzi wa ukubwa

Ikiwa mfumo unakubali binary mbichi, ipendelee kwa ukubwa. Ikiwa maandishi tu yanaruhusiwa, Base64 inaweza kufaa. Kwa mzigo mkubwa, tafuta njia ya kupakia binary. Kwa maandishi salama kwa URL, zingatia Base64URL—upanuzi wa 3 hadi 4 unabaki.

  • Unahitaji kutuma data ya binary
  • Binary mbichi inaruhusiwa? Pendekeza binary kwa ukubwa
  • Uga wa maandishi tu? Base64 inaweza kufaa
  • Mzigo mkubwa? Tafuta njia ya kupakia binary
  • Unahitaji maandishi salama kwa URL? Zingatia Base64URL
  • Tarajia takriban 33% zaidi ya maandishi kwenye ingizo kubwa
Base64 inanunua utangamano wa maandishi. Hainunui faili ndogo.
Base64 inabadilisha nafasi kwa utangamano wa maandishi

Base64 haijabuniwa kufanya data iwe ndogo. Inarahisisha kuwakilisha binary ndani ya mifumo inayotegemea maandishi, na gharama ni ukubwa wa ziada.

Simba au fafanua Base64 katika kivinjari

NEXNARA Simba Base64 inasimba na kufafanua maandishi, na inaweza kugeuza faili kuwa Base64 au Data URL na kurudisha Base64 kuwa faili.

Maandishi yanatumia baiti za UTF-8, kisha Base64—si ASCII pekee. Chagua Standard au Base64URL. Pato la faili linaweza kuwa Base64 mbichi au Data URL (alfabeti sanifu). Ingizo batili linakataliwa. Baiti zisizo UTF-8 zinahitaji Kwenda faili, si kufafanua maandishi.

Faili zaidi ya 10 MB zinaweza kuchelewesha kichupo (onyo). Faili zaidi ya 32 MB zinazuiwa.

Usimbaji na ufafanuzi hutokea katika kivinjari chako. Faili haitumwi kwa seva ya NEXNARA kwa chombo hiki. Matangazo na vipengele vingine vya tovuti bado vinatumia mtandao.

Bandika maandishi au faili katika Simba Base64 na linganisha baiti asili na urefu uliosimbwa.

FAQ

Kwa nini Base64 inaongeza ukubwa wa faili?

Inaweka baiti 3 (biti 24) kwenye herufi 4 (4 × biti 6). Ikihifadhiwa kama maandishi, hiyo ni takriban theluthi zaidi kwa ingizo kubwa.

Je, Base64 daima ni kubwa kwa 33%?

Hapana. Ingizo kubwa linakaribia takriban 33.3%. Ingizo dogo linaweza kukua zaidi kwa sababu ya pedi. Tumia 4 × ceil(n / 3).

Base64 ni kubwa kiasi gani kuliko binary?

Urefu sanifu wenye pedi ni herufi 4 × ceil(n / 3). Kiambishi awali cha Data URL kinaongeza zaidi.

Je, ukandamizaji wa Base64 unapunguza ukubwa wa faili?

Base64 haikandamizi. Gzip au Brotli kwenye maandishi yaliyosimbwa vinaweza kupunguza sehemu; havifuti gharama ya ziada katika kila kesi.

Je, Base64URL inatumia nafasi kidogo?

Inaweza kuacha pedi ya =, kwa hivyo kamba inaweza kuwa fupi kwa herufi 0–2. Muundo wa usimbaji wa 3-hadi-4 ni ule ule.

Je, nitumie Base64 kwa faili kubwa?

Ikiwa unahitaji maandishi tu. Kwa uhamisho mkubwa au wa mara kwa mara, njia ya binary mara nyingi ni ndogo. Base64 si kosa kila wakati kwa API.