Tech Help
Ինչու է Base64-ը ֆայլերը մեծացնում
Base64-ը սովորաբար երկուական տվյալը մոտ մեկ երրորդով մեծացնում է։ Տես 3 բայթից 4 նիշ կառուցվածքը, լրացումը, Data URL հավելյալ ծախսը և երբ այդ չափն արժե։
Base64-ը սովորաբար երկուական տվյալը մոտ մեկ երրորդով մեծացնում է, որովհետև յուրաքանչյուր 3 բայթ երկուական տվյալ ներկայացնում է 4 տպելի Base64 նիշով։
Եթե մուտքի երկարությունը 3-ի ճշգրիտ բազմապատիկ չէ, ստանդարտ լրացված Base64-ը կարող է = նիշեր ավելացնել։ Կոդավորված երկարությունը 4 × ceil(n / 3) է, որտեղ n-ը բնօրինակ բայթի երկարությունն է։
«Մոտ 33%»-ը մեծ մուտքեր է նկարագրում։ Շատ փոքր մուտքերում տոկոսը լրացման պատճառով կարող է շատ ավելի մեծ երևալ։ Base64-ը սեղմում չէ։ Կոդավորման և գաղտնագրման համար տես [Արդյո՞ք Base64-ը գաղտնագրում է։ Ի՞նչ է Base64-ը։](/hy/story/base64-is-not-encryption)։
Այս հոդվածը բացատրում է, թե ինչու է Base64 ելքն ավելի մեծ, քան բնօրինակ բայթերը։ Սա անվտանգության ուղեցույց չէ։ Եթե պետք է կոդավորում գաղտնագրման դեմ, օգտագործեք Արդյո՞ք Base64-ը գաղտնագրում է։ Ի՞նչ է Base64-ը։։
Ինչու է Base64-ին ավելի շատ տեղ պետք
3 բայթը 24 բիթ է։ Base64-ը այդ 24 բիթը բաժանում է 6 բիթանոց 4 խմբի։ Յուրաքանչյուր խումբ համապատասխանում է մեկ Base64 նիշի, ուստի 3 մուտքային բայթ դառնում է 4 ելքային նիշ։ ASCII նիշին 1 բայթ պահելիս դա 4 / 3 ≈ 1.333 է — մոտ 33.3% աճ։
- 3 բայթ (24 բիթ)
- Բաժանել 6 բիթանոց 4 խմբի
- Յուրաքանչյուր խումբ → մեկ Base64 նիշ
- 4 նիշ (հաճախ 4 բայթ տեքստ)
Պարզ, ստուգելի օրինակ
Այս կոդավորումները համընկնում են ստանդարտ լրացված Base64-ի հետ։
Man
Man
Base64
TWFu
Man-ը 3 UTF-8/ASCII բայթ է։ TWFu-ն 4 նիշ է. 3 → 4։
Hello
Hello
Base64
SGVsbG8=
Hello-ն 5 բայթ է։ SGVsbG8=-ը 8 նիշ է, մեկ = ներառյալ։ Փոքր տվյալում լրացումը տոկոսը 33%-ից մեծ է ցույց տալիս։
Ինչպես հաշվել Base64 չափը
Ստանդարտ լրացված Base64-ի համար encodedLength = 4 × ceil(originalBytes / 3)։
| Բնօրինակ բայթեր | Base64 նիշեր |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 4 | 8 |
| 5 | 8 |
| 6 | 8 |
1 կամ 2 բայթ դեռ 4 նիշ են տալիս։ Օգտագործեք բանաձևը, ոչ ֆիքսված 33%։
Ինչ է նշանակում «=» լրացումը
= նշանը ցույց է տալիս, որ վերջին 3 բայթանոց բլոկը լիքը չէր։ 1 մուտքային բայթ օգտագործում է երկու = նիշ. 2 բայթ՝ մեկը. 3 բայթ՝ ոչ մեկը։ Լրացումը գաղտնագրում կամ անվտանգության հատկություն չէ։
Արդյոք Base64URL-ն ավելի քիչ տեղ է զբաղեցնում
Base64URL-ը + նշանը դարձնում է -, / նշանը՝ _, և Base64 կոդավորում-ը կոդավորելիս բաց է թողնում վերջի = նիշերը։ Դա կարող է տողը կարճացնել այդ = նիշերով։ 3 բայթ → 4 նիշ կառուցվածքը նույնն է մնում, ուստի Base64URL-ը ավելի տեղախնայող երկուական ձևաչափ չէ։
Ինչու կարող են շատ փոքր մուտքերն աճել 33%-ից ավելի
1 բայթ → 4 նիշ երկարության 300% աճ է։ 2 բայթ → 4-ը 100% է։ 3 բայթ → 4-ը մոտ 33.3% է։ n-ի աճին լրացումն ավելի քիչ է նշանակում, և հավելյալ ծախսը մոտենում է մոտ 33%-ի։ Base64-ը միշտ ճշգրիտ 33% մեծ չէ։
Ինչու է Base64 Data URL-ն էլ ավելի մեծ
Data URL-ը բեռից առաջ ավելացնում է նախածանց, օրինակ data:image/png;base64,։ Շատ փոքր ֆայլում այդ նախածանցը կարող է տոկոսը գերակշռել։ Base64 կոդավորում-ը կարող է արտածել հում Base64 կամ Data URL. Data URL ելքն օգտագործում է ստանդարտ այբուբեն։
Base64 ընդդեմ երկուականի. որն է ավելի փոքր
Հում երկուականն ավելի տեղախնայող է փոխադրման և պահման համար։ Base64-ն ավելի մեծ է, բայց տեքստ-անվտանգ JSON-ում, էլփոստում և այլ միայն-տեքստ ուղիներում։ Երկուականից տեքստ կոդավորում է, ոչ սեղմում։
Արդյոք Base64-ը սեղմում է ֆայլերը
Ոչ։ Base64-ը սեղմման ձևաչափ չէ։ Կոդավորված տեքստը սովորաբար ավելի մեծ է, քան բնօրինակ բայթերը։ Եթե հետո այդ տեքստին կիրառեք gzip կամ Brotli, որոշ ավելորդություն կարող է փոքրանալ — արդյունքը կախված է տվյալից և սեղմիչից։ gzip-ը Base64 հավելյալ ծախսը լիովին չի հանում։
Ինչ է պատահում, եթե Base64-ը gzip արվի
HTTP սեղմումը կարող է նվազեցնել Base64 տեքստի որոշ կրկնվող նախշեր։ JPEG, PNG կամ ZIP հաճախ վատ են սեղմվում նույնիսկ որպես հում բայթ, և Base64-ապա-gzip դեռ դեպքից է կախված։ gzip-ից հետո համընդհանուր հավելյալ տոկոս չկա։
Արդյոք պետք է ֆայլերը պահել որպես Base64
Base64-ը կարող է երկուականը տեղավորել JSON դաշտում, փոքր ներդրված ռեսուրսում, միայն-տեքստ API-ում, պատճենել/տեղադրել կամ Data URL-ում։ Մեծ ֆայլերում պահումը, հիշողությունը և բեռի չափը բոլորն աճում են։ Դա «երբեք մի օգտագործեք Base64 ֆայլերի համար» չէ։
Ինչու է Base64-ը սովորական JSON API-ներում
JSON-ը բնիկ հում-երկուական տեսակ չունի, ուստի API-ները հաճախ բայթերը դնում են Base64 տողում։ Մեծ ֆայլերի համար multipart/form-data, օբյեկտի պահեստը կամ ուղիղ երկուական վերբեռնումը կարող են ավելի հարմար լինել։ Ոչ մի ընտրություն միշտ լավագույնը չէ։
Ինչու է Base64-ն օգտագործվում էլփոստում
MIME-ը կարող է օգտագործել Base64, որ երկուական կցորդը ճանապարհորդի որպես տեքստ-անվտանգ նիշեր։ Նույն չափի հավելյալ ծախսը դեռ կիրառվում է։ Սա փոխադրման ներկայացում է, ոչ ավելի փոքր ֆայլ։
Երբ է հավելյալ չափն արժե
Հավելյալ չափը կարող է արժել, երբ երկուականը պետք է նստի տեքստի մեջ, բեռը փոքր է, API-ն պահանջում է Base64, կամ Data URL է պետք։ Մեծ մեդիայի համար նախընտրեք հում երկուական, երբ համակարգը թույլ է տալիս։
Երբ պետք է խուսափել Base64-ից
Բաց թողեք մեծ ֆայլերում, նեղ թողունակության մեջ, հաճախակի փոխանցումներում, կամ երբ երկուական ուղի արդեն կա — իրավիճակային է, ոչ «Base64-ը վատ պրակտիկա է»։
Լրացված Base64 երկարություններ, որոնք կարող եք ստուգել
Բնօրինակ բայթերի հաշվարկներ և ստանդարտ լրացված Base64 նիշերի հաշվարկներ.
| Բնօրինակ բայթեր | Base64 նիշեր |
|---|---|
| 1 | 4 |
| 2 | 4 |
| 3 | 4 |
| 10 | 16 |
| 100 | 136 |
| 1,000 | 1,336 |
Բոլոր տողերը հետևում են 4 × ceil(n / 3)։ Սրանք Base64 նիշերի հաշվարկներ են։
Օրինակ. որքան մեծ կլինի 1,000 բայթանոց ֆայլը
4 × ceil(1000 / 3)։ ceil(333.333…) = 334, և 4 × 334 = 1336։ Այսպես 1,000 բայթ դառնում է 1,336 Base64 նիշ։ UTF-8/ASCII պահելիս յուրաքանչյուր նիշ սովորաբար 1 բայթ է — 1,336-ը մի վերաբերվեք որպես ճշգրիտ հիշողության բայթերի հաշվարկ։
Կարո՞ղ է Base64-ն օգտագործել ավելի շատ հիշողություն, քան ֆայլի չափն է հուշում
Որոշ միջավայրեր տողերը պահում են նիշին 1 բայթից ավելիով, և կոդավորումը/ապակոդավորումը կարող է բուֆերն ու տողը միասին պահել։ Հիշողության օգտագործումը ճշգրիտ նիշերի երկարությունը չէ։
Չափի համար պարզ որոշման ուղեցույց
Եթե համակարգը հում երկուական է ընդունում, չափի համար նախընտրեք այն։ Եթե թույլատրվում է միայն տեքստ, Base64-ը կարող է հարմարել։ Մեծ բեռի համար ստուգեք երկուական վերբեռնման ուղի։ URL-անվտանգ տեքստի համար դիտարկեք Base64URL — 3-ից 4 ընդարձակումը մնում է։
- Պետք է ուղարկել երկուական տվյալ
- Հում երկուական թույլատրվա՞ծ է։ Չափի համար նախընտրեք երկուական
- Միայն-տեքստ դաշտ։ Base64-ը կարող է հարմար լինել
- Մեծ բեռ։ Ստուգեք երկուական վերբեռնման ուղի
- URL-անվտանգ տեքստ է պետք։ Դիտարկեք Base64URL
- Մեծ մուտքերում սպասեք մոտ 33% ավելի տեքստ
Base64-ը նախատեսված չէ տվյալը փոքրացնելու համար։ Երկուականը տեքստային համակարգերում ներկայացնելն է հեշտացնում, իսկ ծախսը հավելյալ չափն է։
Կոդավորեք կամ ապակոդավորեք Base64 բրաուզերում
NEXNARA Base64 կոդավորում-ը կոդավորում և ապակոդավորում է տեքստ, և կարող է ֆայլը դարձնել Base64 կամ Data URL և Base64-ը վերադարձնել ֆայլի։
Տեքստն օգտագործում է UTF-8 բայթեր, ապա Base64 — ոչ միայն ASCII։ Ընտրեք Standard կամ Base64URL։ Ֆայլի ելքը կարող է լինել հում Base64 կամ Data URL (ստանդարտ այբուբեն)։ Անվավեր մուտքը մերժվում է։ Ոչ-UTF-8 բայթերին Ֆայլ է պետք, ոչ տեքստի ապակոդավորում։
10 MB-ից մեծ ֆայլերը կարող են դանդաղեցնել ներդիրը (նախազգուշացում)։ 32 MB-ից մեծ ֆայլերը արգելափակվում են։
Կոդավորումն ու ապակոդավորումը տեղի են ունենում ձեր բրաուզերում։ Այս գործիքի համար ֆայլը չի ուղարկվում NEXNARA սերվեր։ Գովազդներն ու կայքի այլ հատկությունները դեռ օգտագործում են ցանցը։
Տեղադրեք տեքստ կամ ֆայլ Base64 կոդավորում-ում և համեմատեք բնօրինակ բայթերը կոդավորված երկարության հետ։
FAQ
Ինչու է Base64-ը մեծացնում ֆայլի չափը
3 բայթը (24 բիթ) համապատասխանեցնում է 4 նիշի (4 × 6 բիթ)։ Տեքստ պահելիս մեծ մուտքերում դա մոտ մեկ երրորդով ավելի է։
Արդյոք Base64-ը միշտ 33% մեծ է
Ոչ։ Մեծ մուտքերը մոտենում են մոտ 33.3%-ի։ Շատ փոքր մուտքերը լրացման պատճառով կարող են ավելի աճել։ Օգտագործեք 4 × ceil(n / 3)։
Որքանով է Base64-ն ավելի մեծ, քան երկուականը
Ստանդարտ լրացված երկարությունը 4 × ceil(n / 3) նիշ է։ Data URL նախածանցն ավել է ավելացնում։
Արդյոք Base64 սեղմումը նվազեցնում է ֆայլի չափը
Base64-ը չի սեղմում։ gzip կամ Brotli կոդավորված տեքստի վրա կարող են մի մասը փոքրացնել. հավելյալ ծախսը ամեն դեպքում չեն ջնջում։
Արդյոք Base64URL-ն ավելի քիչ տեղ է զբաղեցնում
Կարող է բաց թողնել = լրացումը, ուստի տողը կարող է լինել 0–2 նիշ ավելի կարճ։ 3-ից 4 կոդավորման կառուցվածքը նույնն է։
Պետք է օգտագործեմ Base64 մեծ ֆայլերի համար
Միայն եթե տեքստ է պետք։ Մեծ կամ հաճախակի փոխանցումների համար երկուական ուղին հաճախ ավելի փոքր է։ Base64-ը API-ներում միշտ սխալ չէ։