Base64 рдПрдиреНрдХреЛрдбреЗрдб рд╕рд╛рдЗрдЬрд╝ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
Base64 рдПрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЛ 64 рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп ASCII рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдЬрд╝рд░рд┐рдП рджрд░реНрд╢рд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ HTML/CSS рдореЗрдВ рдЗрдореЗрдЬ рдЬреЛрдбрд╝рдиреЗ (data URI), рдИрдореЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдЯреИрдЪ рдХрд░рдиреЗ (MIME), рдФрд░ JSON рдпрд╛ рдЯреЛрдХрди рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рд▓реЗ рдЬрд╛рдиреЗ рдореЗрдВ рдЦреВрдм рд╣реЛрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ Base64 рд╣рд░ 3 рдмрд╛рдЗрдЯ рдЗрдирдкреБрдЯ рдХреЛ 4 рдЖрдЙрдЯрдкреБрдЯ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рдореВрд▓ рдбреЗрдЯрд╛ рд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ тАФ рд▓рдЧрднрдЧ 33% рдЬрд╝реНрдпрд╛рджрд╛ред рдпрд╣ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЖрдкрдХреЛ рдареАрдХ-рдареАрдХ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЕрдкрдиреА рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рджрд░реНрдЬ рдХрд░реЗрдВ, рдпреВрдирд┐рдЯ рдЪреБрдиреЗрдВ (рдмрд╛рдЗрдЯреНрд╕, KB, MB рдпрд╛ GB), рдФрд░ рддрдп рдХрд░реЗрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕реНрдЯреИрдВрдбрд░реНрдб рдкреИрдбрд┐рдВрдЧ (рдЕрдВрдд рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ = рдЕрдХреНрд╖рд░) рд╢рд╛рдорд┐рд▓ рд╣реЛ рдпрд╛ рдирд╣реАрдВред рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЖрдкрдХреЛ рдПрдиреНрдХреЛрдбреЗрдб рдЖрдХрд╛рд░ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рдУрд╡рд░рд╣реЗрдб рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рднреАред
рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ
рд╕реНрдЯреИрдВрдбрд░реНрдб Base64 рдЗрдирдкреБрдЯ рдХреЛ 3-рдмрд╛рдЗрдЯ рдХреЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреА рд╣реИред рд╣рд░ рд╕рдореВрд╣ рдареАрдХ 4 рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдЦрд╝рд┐рд░реА рдЕрдзреВрд░реЗ рд╕рдореВрд╣ рдХреЛ = рд▓рдЧрд╛рдХрд░ 4 рдЕрдХреНрд╖рд░реЛрдВ рддрдХ рдкреВрд░рд╛ (рдкреИрдб) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдкреИрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдХрд╛рд░ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рддрд╛ рд╣реИ:
$$\text{encoded\_bytes} = 4 \times \left\lceil \frac{\text{input\_bytes}}{3} \right\rceil$$
рдЕрдЧрд░ рдкреИрдбрд┐рдВрдЧ рдмрдВрдж рдХрд░ рджреА рдЬрд╛рдП, рддреЛ рд╕рд┐рд░реНрдлрд╝ рдЙрддрдиреЗ рд╣реА рдЕрдХреНрд╖рд░ рдмрдирддреЗ рд╣реИрдВ рдЬрд┐рддрдиреЗ рд╡рд╛рдХрд╝рдИ рдЬрд╝рд░реВрд░реА рд╣реИрдВ: \( \left\lceil \frac{4 \times \text{input\_bytes}}{3} \right\rceil \), рдЬрд┐рд╕рд╕реЗ рд╣рд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ 1тАУ2 рдкреИрдбрд┐рдВрдЧ рдЕрдХреНрд╖рд░ рдмрдЪ рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рд▓ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ 1,000-рдмрд╛рдЗрдЯ рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред рдЗрд╕реЗ 3 рд╕реЗ рднрд╛рдЧ рджреЗрдВ рддреЛ 333.33 рдЖрддрд╛ рд╣реИ, рдЗрд╕реЗ рдКрдкрд░ рдХреА рдУрд░ рдкреВрд░реНрдгрд╛рдВрдХрд┐рдд (ceil) рдХрд░рдХреЗ 334 рдмрдирд╛рдПрдБ, рдлрд┐рд░ 4 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ: \(334 \times 4 = \textbf{1{,}336}\) рдмрд╛рдЗрдЯреНрд╕ред рдУрд╡рд░рд╣реЗрдб рд╣реЛрдЧрд╛ \((1336 - 1000) / 1000 = 33.6\%\)ред рдмрд┐рдирд╛ рдкреИрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ \(\left\lceil 4000/3 \right\rceil = \left\lceil 1333.33 \right\rceil = 1{,}334\) рдмрд╛рдЗрдЯреНрд╕ред
рдореБрдЦреНрдп рд╢рд░реНрддреЗрдВ рд╕рдордЭрд╛рдИ рдЧрдИ
- Base64
-
рдПрдХ рдмрд╛рдЗрдирд░реА-рд╕реЗ-рдкрд╛рда рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реНрдХреАрдо рдЬреЛ 64 рдореБрджреНрд░рдг рдпреЛрдЧреНрдп ASCII рд╡рд░реНрдгреЛрдВ (AтАУZ, aтАУz, 0тАУ9, рдкреНрд▓рд╕
+рдФрд░/) рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╛рдЗрдирд░реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдИрдореЗрд▓ рдмреЙрдбреА, JSON, XML, рдФрд░ URL рдЬреИрд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рда-рдЖрдзрд╛рд░рд┐рдд рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред - 3-рдмрд╛рдЗрдЯ рд╕рдореВрд╣ / 4-рд╡рд░реНрдг рдмреНрд▓реЙрдХ
- Base64 рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдХреЗ рд╣рд░ 3 рдмрд╛рдЗрдЯ (24 рдмрд┐рдЯ) рдХреЛ рдЪрд╛рд░ 6-рдмрд┐рдЯ рдЪрдВрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдПрдХ Base64 рд╡рд░реНрдг рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ 3 рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ 4 рдЖрдЙрдЯрдкреБрдЯ рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ тАФ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╡реГрджреНрдзрд┐ рдХрд╛ рдореВрд▓ рдХрд╛рд░рдгред
-
рдкреИрдбрд┐рдВрдЧ (
=) -
рдЬрдм рдЗрдирдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ 3 рдХрд╛ рд╕рдЯреАрдХ рдЧреБрдгрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рд╕рдореВрд╣ рдЕрдзреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдиреНрдХреЛрдбрд░ рдПрдХ рдпрд╛ рджреЛ
=рд╡рд░реНрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ 4 рдХрд╛ рдЧреБрдгрдХ рд░рд╣реЗред рдПрдХ рд╢реЗрд╖ рдмрд╛рдЗрдЯ рджреЛ=рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ; рджреЛ рд╢реЗрд╖ рдмрд╛рдЗрдЯ рдПрдХ=рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред - рдУрд╡рд░рд╣реЗрдб
- Base64 рдореВрд▓ рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдХрд╛рд░ред рдХреНрдпреЛрдВрдХрд┐ 3 рдмрд╛рдЗрдЯ 4 рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдиреНрдХреЛрдбрд┐рдд рдбреЗрдЯрд╛ рд▓рдЧрднрдЧ \(4/3 \approx 1.333\) рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд▓рдЧрднрдЧ 33% рдХреА рд╡реГрджреНрдзрд┐ рд╣реИ (рдкреИрдбрд┐рдВрдЧ рдФрд░ рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЛ рдЧрд┐рдирдиреЗ рдХреЗ рдмрд╛рдж рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ)ред
- рдбреЗрдЯрд╛ URI
-
рдПрдХ URL рд╕реНрдХреАрдо (рдЙрджрд╛.
data:image/png;base64,iVBORw0KGgoтАж) рдЬреЛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреА Base64-рдПрдиреНрдХреЛрдбрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реАрдзреЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рдЫреЛрдЯреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред - MIME рд▓рд╛рдЗрди рд░реИрдкрд┐рдВрдЧ
- рдИрдореЗрд▓ (MIME) рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ, Base64 рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдзрд┐рдХрддрдо 76 рд╡рд░реНрдгреЛрдВ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ CRLF рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпреЗ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдореВрд▓ 33% рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд░реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
- ASCII рд╡рд░реНрдг
- 7-рдмрд┐рдЯ ASCII рд╕реЗрдЯ рд╕реЗ рдПрдХ рдПрдХрд▓ рд╡рд░реНрдг, рдПрдХ рдмрд╛рдЗрдЯ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рддред Base64 рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдПрдХ ASCII рд╡рд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдд рд▓рдВрдмрд╛рдИ рдмрд╛рдЗрдЯ рдореЗрдВ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
Base64 рд╣рдореЗрд╢рд╛ рдмрдбрд╝реА рдХреНрдпреЛрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИ? рдбреЗрдЯрд╛ рдХреЗ рд╣рд░ 6 рдмрд┐рдЯ рдХреЛ рдПрдХ 8-рдмрд┐рдЯ ASCII рдЕрдХреНрд╖рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ 25% рджрдХреНрд╖рддрд╛ рдШрдЯ рдЬрд╛рддреА рд╣реИ рдФрд░ рд▓рдЧрднрдЧ 33% рдЬрд╝реНрдпрд╛рджрд╛ рдмрд╛рдЗрдЯреНрд╕ рдмрди рдЬрд╛рддреА рд╣реИрдВред
рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ? рдирд╣реАрдВред рдХреБрдЫ MIME рдПрдиреНрдХреЛрдбрд░ рд╣рд░ 76 рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдмрд╛рдж рдПрдХ рдирдИ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдереЛрдбрд╝рд╛-рд╕рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдХрд╛рд░ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЯреВрд▓ рд╕рд┐рд░реНрдлрд╝ рдХрдЪреНрдЪреЗ (raw) рдПрдиреНрдХреЛрдбреЗрдб рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред
data URI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдПрдХ data URI рдореЗрдВ data:image/png;base64, рдЬреИрд╕рд╛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рднреА рдЬреБрдбрд╝рддрд╛ рд╣реИред рдкреВрд░реЗ URI рдХреА рд▓рдВрдмрд╛рдИ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдПрдиреНрдХреЛрдбреЗрдб рдЖрдХрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВред