Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: 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 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.066 c
1-1098612951
Aleks
2004-10-24 14:15
2004.11.07
поиск по тексту


1-1098704468
PURGEN
2004-10-25 15:41
2004.11.07
Процедура


1-1098475502
voron
2004-10-23 00:05
2004.11.07
Как работать в Делфи с очень большими числами


3-1097061190
Its
2004-10-06 15:13
2004.11.07
SQL - запрос


3-1097328611
HotIce
2004-10-09 17:30
2004.11.07
База Данных Access: ADO или BDE?