Ascii85, також відома як Base85 — форма кодування двійкових даних, розроблена для утиліти . Використовуючи 5 ASCII літер для представлення 4 байтів двійкових даних (що робить розмір закодованих даних на чверть більшим за оригінал, в разі використання 8-бітних ASCII символів), тому це кодування краще за uuencode і Base64, які для представлення 3х байтів використовують 4 символи (розмір збільшується на третину за тих же умов).
Нині головним чином використовується у файлових форматах PostScript компанії Adobe та Portable Document Format.
Головна ідея
Головна потреба в текстовому кодуванні двійкових даних витікає з необхідності передавати існуючими протоколами, які розроблялися для передачі лише зрозумілого людині тексту. Такими протоколами безпечно надсилати лише 7-бітні дані (то того ж потрібно уникати використання керуючих кодів ASCII) та інколи потрібно додавати символу закінчення рядку для обмеження довжини рядків і не містити пробілів. Тобто, «безпечно» використовувати лише 94 (друковані літери ASCII).
Версія Adobe
Приклад
Наприклад, історичне гасло Вікіпедії,
- Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.
виглядає у Ascii85 кодуванні наступним чином:
<~9jqo^BlbD-BleB1DJ+*+F(f,q/0JhKF<GL>Cj@.4Gp$d7F!,L7@<6@)/0JDEF<G%<+EV:2F!, O<DJ+*.@<*K0@<6L(Df-\0Ec5e;DffZ(EZee.Bl.9pF"AGXBPCsi+DGm>@3BB/F*&OCAfu2/AKY i(DIb:@FD,*)+C]U=@3BN#EcYf8ATD3s@q?d$AftVqCh[NqF<G:8+EV:.+Cf>-FD5W8ARlolDIa l(DId<j@<?3r@:F%a+D58'ATD4$Bl@l3De:,-DJs`8ARoFb/0JMK@qB4^F!,R<AKZ&-DfTqBG%G >uD.RTpAKYo'+CT/5+Cei#DII?(E,9)oF*2M7/c~>
Текстовий вміст | M | a | n | ... | s | u | r | e | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ASCII | 77 | 97 | 110 | 32 | ... | 115 | 117 | 114 | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Двійковий вигляд | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
32-бітне значення | 1298230816 = 24×854 + 73×853 + 80×852 + 78×85 + 61 | ... | 1937076837 = 37×854 + 9×853 + 17×852 + 44×85 + 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Base 85 (+33) | 24 (57) | 73 (106) | 80 (113) | 78 (111) | 61 (94) | ... | 37 (70) | 9 (42) | 17 (50) | 44 (77) | 22 (55) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
ASCII | 9 | j | q | o | ^ | ... | F | * | 2 | M | 7 |
Оскільки остання четвірка неповна, її треба доповнити трьома нульовими байтами:
Text content | . | \0 | \0 | \0 | ||||||||||||||||||||||||||||
ASCII | 46 | 0 | 0 | 0 | ||||||||||||||||||||||||||||
Двійковий вигляд | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
32-бітне значення | 771,751,936 = 14×854 + 66×853 + 56×852 + 74×85 + 46 | |||||||||||||||||||||||||||||||
Base 85 (+33) | 14 (47) | 66 (99) | 56 (89) | 74 (107) | 46 (79) | |||||||||||||||||||||||||||
ASCII | / | c | Y | k | O |
--> Since three bytes of padding had to be added, the three final characters 'YkO' are omitted from the output.
Decoding is done inversely, except that the last 5-tuple is padded with 'u' characters:
ASCII | / | c | u | u | u | |||||||||||||||||||||||||||
Base 85 (+33) | 14 (47) | 66 (99) | 84 (117) | 84 (117) | 84 (117) | |||||||||||||||||||||||||||
32-bit Value | 771,955,124 = 14×854 + 66×853 + 84×852 + 84×85 + 84 | |||||||||||||||||||||||||||||||
Bit pattern | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
ASCII | 46 | 3 | 25 | 180 | ||||||||||||||||||||||||||||
Text content | . | [ ] | [ EM ] | undefined |
Since the input had to be padded with three 'u' bytes, the last three bytes of the output are ignored and we end up with the original period.
Note that the input sentence does not contain 4 consecutive zero bytes, so the example does not show the use of the 'z' abbreviation.
Сумісність
Ascii85 кодування сумісне з 7-бітним та 8-бітним MIME, маючи менший розмір ніж Base64.
Єдина проблема полягає в тому, що кодування Ascii85 містить символи (одинарні '
та подвійні "
лапки, прямі дужки та амперсанд &
), які мають бути екрановані в мовах розмітки на зразок XML або SGML.
Див. також
Посилання
- btoa [ 24 вересня 2015 у Wayback Machine.] і atob [ 24 вересня 2015 у Wayback Machine.] Джерельні тексти початкової програми 1990
- PostScript Language Reference [ 23 жовтня 2014 у Wayback Machine.] (Adobe) — див. ASCII85Encode Filter
- Кодування та декодувння різними мовами програмування:
- awk [ 29 грудня 2014 у Wayback Machine.]
- C# [ 26 січня 2010 у Wayback Machine.]
- F# [ 23 квітня 2011 у Wayback Machine.]
- Perl [ 25 квітня 2012 у Wayback Machine.]
- Python [ 2 грудня 2014 у Wayback Machine.]
- Yet another RFC1924/ASCII85/IPv6 Base85 Python implementation (APLv2) [ 24 грудня 2014 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ascii85 takozh vidoma yak Base85 forma koduvannya dvijkovih danih rozroblena dlya utiliti Vikoristovuyuchi 5 ASCII liter dlya predstavlennya 4 bajtiv dvijkovih danih sho robit rozmir zakodovanih danih na chvert bilshim za original v razi vikoristannya 8 bitnih ASCII simvoliv tomu ce koduvannya krashe za uuencode i Base64 yaki dlya predstavlennya 3h bajtiv vikoristovuyut 4 simvoli rozmir zbilshuyetsya na tretinu za tih zhe umov Nini golovnim chinom vikoristovuyetsya u fajlovih formatah PostScript kompaniyi Adobe ta Portable Document Format Golovna ideyaGolovna potreba v tekstovomu koduvanni dvijkovih danih vitikaye z neobhidnosti peredavati isnuyuchimi protokolami yaki rozroblyalisya dlya peredachi lishe zrozumilogo lyudini tekstu Takimi protokolami bezpechno nadsilati lishe 7 bitni dani to togo zh potribno unikati vikoristannya keruyuchih kodiv ASCII ta inkoli potribno dodavati simvolu zakinchennya ryadku dlya obmezhennya dovzhini ryadkiv i ne mistiti probiliv Tobto bezpechno vikoristovuvati lishe 94 drukovani literi ASCII Versiya AdobePriklad Napriklad istorichne gaslo Vikipediyi Man is distinguished not only by his reason but by this singular passion from other animals which is a lust of the mind that by a perseverance of delight in the continued and indefatigable generation of knowledge exceeds the short vehemence of any carnal pleasure viglyadaye u Ascii85 koduvanni nastupnim chinom lt 9jqo BlbD BleB1DJ F f q 0JhKF lt GL gt Cj 4Gp d7F L7 lt 6 0JDEF lt G lt EV 2F O lt DJ lt K0 lt 6L Df 0Ec5e DffZ EZee Bl 9pF AGXBPCsi DGm gt 3BB F amp OCAfu2 AKY i DIb FD C U 3BN EcYf8ATD3s q d AftVqCh NqF lt G 8 EV Cf gt FD5W8ARlolDIa l DId lt j lt 3r F a D58 ATD4 Bl l3De DJs 8ARoFb 0JMK qB4 F R lt AKZ amp DfTqBG G gt uD RTpAKYo CT 5 Cei DII E 9 oF 2M7 c gt Tekstovij vmist M a n s u r eASCII 77 97 110 32 115 117 114 101Dvijkovij viglyad 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 132 bitne znachennya 1298230816 24 854 73 853 80 852 78 85 61 1937076837 37 854 9 853 17 852 44 85 22Base 85 33 24 57 73 106 80 113 78 111 61 94 37 70 9 42 17 50 44 77 22 55 ASCII 9 j q o F 2 M 7 Oskilki ostannya chetvirka nepovna yiyi treba dopovniti troma nulovimi bajtami Text content 0 0 0ASCII 46 0 0 0Dvijkovij viglyad 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 032 bitne znachennya 771 751 936 14 854 66 853 56 852 74 85 46Base 85 33 14 47 66 99 56 89 74 107 46 79 ASCII c Y k O gt Since three bytes of padding had to be added the three final characters YkO are omitted from the output Decoding is done inversely except that the last 5 tuple is padded with u characters ASCII c u u uBase 85 33 14 47 66 99 84 117 84 117 84 117 32 bit Value 771 955 124 14 854 66 853 84 852 84 85 84Bit pattern 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 0ASCII 46 3 25 180Text content EM undefined Since the input had to be padded with three u bytes the last three bytes of the output are ignored and we end up with the original period Note that the input sentence does not contain 4 consecutive zero bytes so the example does not show the use of the z abbreviation Sumisnist Ascii85 koduvannya sumisne z 7 bitnim ta 8 bitnim MIME mayuchi menshij rozmir nizh Base64 Yedina problema polyagaye v tomu sho koduvannya Ascii85 mistit simvoli odinarni ta podvijni lapki pryami duzhki ta ampersand amp yaki mayut buti ekranovani v movah rozmitki na zrazok XML abo SGML Div takozhBase58 Base64 uuencodePosilannyabtoa 24 veresnya 2015 u Wayback Machine i atob 24 veresnya 2015 u Wayback Machine Dzherelni teksti pochatkovoyi programi 1990 PostScript Language Reference 23 zhovtnya 2014 u Wayback Machine Adobe div ASCII85Encode Filter Koduvannya ta dekoduvnnya riznimi movami programuvannya awk 29 grudnya 2014 u Wayback Machine C 26 sichnya 2010 u Wayback Machine F 23 kvitnya 2011 u Wayback Machine Perl 25 kvitnya 2012 u Wayback Machine Python 2 grudnya 2014 u Wayback Machine Yet another RFC1924 ASCII85 IPv6 Base85 Python implementation APLv2 24 grudnya 2014 u Wayback Machine