Увеличение повторов байт

К примеру есть массив одномерный массив байт: 231, 128, 55, 121, 44. У кого есть какие идеи для того чтобы увеличить количество повторов байт? Т.е. например идеал когда 1 байт встречается в каждой ячейке: 231, 231, 231, 231, 231. Моя цель обработать данные перед сжатием.
5 ответов

Что бы достичь идеала можно поместить в каждый элемент массива одно и тоже число


for i:=Low(MyArr)+1 to High(MyArr) do MyArr[i]:=MyArr[Low(MyArr)];


Что бы достичь идеала можно поместить в каждый элемент массива одно и тоже число
Но нужно чтобы после приведения всего массива к одному числу, потом можно было его распознать, при чем не существенно увеличить чисто байт для меток на распознание.


for i:=Low(MyArr)+1 to High(MyArr) do MyArr[i]:=MyArr[Low(MyArr)];
Можно просто от 256 отнять значение каждой ячейки массива, а потом прибавить, но в связи с этим увеличится количество байт на ссылки вдвое.


Я один не понимаю что хочет ТС.. Зачем Вам увеличивать кол-во байт, если затем Вы хотите всё это сжать? Кстати, если заморочиться с жатием, то можно сделать так.. Пусть всё числа в массиве НЕ првевышают 255.. Тогда максимум, ln(255) разрядов в двоичном числе.. Теперь найдет наибольший ln. Если он = 8, то всё.. облом.. если меньше, то запомнить это число(max).. сдвинуть разряды в двоичном числе на 8 - max.. а в конец начать записывать биты следущего числа.. НО ИМХО тут нужно придумывать что-то более совершенно, или просто забить... (Например 255, 1,1,1,1).. Увы так и останется.. Хотя можно найти границу, с которой применение этого алгоритма не будет пустой тратой времеи.. запомнить эту границу, запомнить max и снова плясать..