Вниз
Скачать: CL | DM;

Кодирование "без нуля" - как оптимальнее?   Найти похожие ветки 

← →
Grundic ©   (2004-10-22 22:17) [0]

Возникла проблема (как это обычно бывает и у большинства спрашивающих :) - нужно преобразовать массив[255] байт в некий промежуточный не содержащий нули. И потом - обратно в исходный. Как это оптимальнее всего сделать?

ПЛИЗ! САМБАДИ ХЭЛП МИ!!! :)


← →
Anatoly Podgoretsky ©   (2004-10-22 23:17) [1]

if 0 then not нуль, обратно шиш


← →
kaZaNoVa ©   (2004-10-22 23:27) [2]

Grundic ©   (22.10.04 22:17)
IntToHex заюзай :)))


← →
Defunct ©   (2004-10-22 23:33) [3]

> Grundic ©   (22.10.04 22:17)  

1. Преобразовать в битовый поток.
2. После каждого идущего подряд 7-го нуля добавлять единичку.
3. При обратном преобразовании выбрасывать единичку после каждых 7-ми идущих подряд нулей.


← →
Grundic ©   (2004-10-23 01:33) [4]


> Anatoly Podgoretsky, kaZaNoVa

Спасибо! :))


> Defunct

Что (или почти "что") и сделал:
http://www.rsdn.ru/Forum/Message.aspx?mid=865084&only=1


← →
Defunct ©   (2004-10-23 04:41) [5]

> Что (или почти "что") и сделал

Эээ выглядит просто жутко.
Понять алгоритм работы при такой реализации практически невозможно.

Я бы на вашем месте сделал бы более универсально. Скажем так, создал бы класс, у которого в качестве свойств были бы 2 потока (TStream). Обычный и без нулей. Создал бы 4 метода чтения потока любой длинны (а не только 255 байт) и преобразования.

TConverter = class
private
 ...
public
 property RealStream: TStream Read GetRealStream Write SetRealStream;
 property ZeroFreeStream: TStream Read GetZeroFreeStream Write SetZeroFreeStream;
 ...
End;


И преобразование бы делал по какому-то стандартному протоколу, например, протокол телемеханики "Гранит" http://www.iface.ru/grandesc.htm или подобному.


← →
Sha ©   (2004-10-23 11:29) [6]

> Grundic ©   (22.10.04 22:17)  

Массив[255] байт
1. или уже не содержит нуля (и тогда все OK)
2. или существует некоторый ненулевой символ, которого нет в этом массиве (и тогда XOR с этим символов делает весь массив ненулевым).



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-1097070131
Пуртик
2004-10-06 17:42
2004.11.07
Как ускорить закачку?


4-1096706334
Antonmm2
2004-10-02 12:38
2004.11.07
Функция для определения DVD-ROMа


1-1098129272
Riant
2004-10-18 23:54
2004.11.07
Сохранение страниц в TWebBrowser


1-1098696702
hyper_omsk
2004-10-25 13:31
2004.11.07
Ключи при запуске приложения


4-1096570172
redlord
2004-09-30 22:49
2004.11.07
блокировка файла




   Наверх