Вниз
Скачать: 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.039 c
6-1094038614
MadHead
2004-09-01 15:36
2004.11.07
как запустить/закрыть сторонее приложение на удаленном компе в ло


14-1098048688
GuAV
2004-10-18 01:31
2004.11.07
Exception ;-)


8-1091916682
negrila
2004-08-08 02:11
2004.11.07
Как узнать что в MemoryStream е?


9-1089190934
BladeMaster
2004-07-07 13:02
2004.11.07
BitBlt и прозрачность


3-1097129337
Ega23
2004-10-07 10:08
2004.11.07
Error № 1038




   Наверх