RLE: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Немає опису редагування
Рядок 2:
 
== Приклад використання ==
Розглянемо зображення, що містить простий [[чорний]] текст на суцільному [[білий|білому]] фоні. Тут буде багато серій білих [[піксель|пікселів]] в порожніх місцях, і багато коротких серій чорних пікселів в тексті. Як приклад наведена якийсь довільний рядок зображення в чорно-білому варіанті. Тут B представляє чорний піксель, а W позначає білий:
: <code>WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW</code>
 
Якщо ми застосуємо просте кодування довжин серій до цього рядка, то отримаємо наступне:
 
: <code>12W1B12W3B24W1B14W</code>
Останній запис інтерпретується як «дванадцять W», «одна B», «дванадцять W», «три B» і т. д. Таким чином, код представляє вихідні 67 символів у вигляді всього лише 18.
 
Рядок 11 ⟶ 12:
 
Однак, у випадку, якщо рядок складається з великої кількості неповторюваних символів, її обсяг може зрости.
: <code>ABCABCABCDDDFFFFFF</code>
 
: <code>1A1B1C1A1B1C1A1B1C3D6F</code>
Проблема вирішується досить просто. Алфавіт, в якому записані довжини серій, розділяється на дві (зазвичай рівні) частини. Алфавіт цілих чисел можна, наприклад, розділити на дві частини: позитивні і негативні. Позитивні використовують для запису кількості повторюваних однакових символів, а негативні - для запису кількості неоднакових.
 
: <code>-9ABCABCABC3D6F</code>
Так як чисельні типи даних на комп'ютері завжди мають певний межа, виникає ще одна проблема. Припустимо, ми використовуємо signed char для запису довжин серій. Тоді ми не можемо записати серію довше 127 символів однією парою "довжина-символ". Якщо поспіль записано 256 символів A, їх розділяють на мінімальну кількість груп:
: <code>127A127A2A</code>
 
Запис на деякій мові програмування алгоритму RLE з урахуванням цих обмежень нетривіальна.
 
 
 
Звичайно, кодування, яке використовується для зберігання зображень, оперує з двійковими даними, а не з символами [[ASCII]], як у розглянутому прикладі, однак принцип залишається той же.