Wikipedia писал(а):
Кодирование повторов — это очень простой алгоритм сжатия данных, который оперирует сериями данных, то есть последовательностями, в которых один и тот же символ встречается несколько раз подряд. При кодировании строка одинаковых символов, составляющих серию, заменяется строкой, которая содержит сам повторяющийся символ и количество его повторов.
Рассмотрим изображение, содержащий простой чёрный текст на сплошном белом фоне. Здесь будет много серий белых пикселей в пустых местах, и много коротких серий чёрных пикселей в тексте. В качестве примера приведена некая произвольная строка изображения в черно-белом варианте. Здесь B представляет чёрный пиксель, а W обозначает белый:
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
Если мы применим простое кодирование длин серий к этой строке, то получим следующее:
12WB12W3B24WB14W
Последняя запись интерпретируется как "двенадцать W", "одна B", "двенадцать W", "три B" и т. д. Таким образом, код представляет исходные 67 символов в виде всего лишь 16.
Конечно, кодирование, которое используется для хранения изображений, оперирует с двоичными данными, а не с символами ASCII, как в рассмотренном примере, однако принцип остаётся тот же.
вот в связи с этим возник вопрос, а как быть со сторокой 3333еееееррррввв777йййй
если кодировать именно так, как предложено в вики, то получим 435е4р3в374й, что не совсем то, что хотелось бы, поскольку обратное преобразование даст не то, что было изначально