| 
| 
 | Вопрос # 5 447/ вопрос закрыт / | 
 |  Здравствуйте, уважаемые эксперты!
 Имеется: массив бит ( ReadedBits = TByteArray (array of Byte) ).
 Надо: разбить его на массив Int64 по группам из N бит.
 0<N<65
 
 Например:
 Вход: 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1, n = 9
 Выход: 010101000 | 111010101 | 01
 
 Прим.: незначащие биты - старшие и должны быть заполнены нулями.
 
 Т.е. 010101000 записывается в Int64 так:
 
 00000000000000000000000000000000000000000000000000000010101000
 
 А 10 так:
 
 00000000000000000000000000000000000000000000000000000000000010
 Приложение:Переключить в обычный режим  Int64Value := 0;   for i:= 0 to Length( ReadedBits ) - 1 do   begin      Int64Value := Int64Value or ( ReadedBits[i] shl (i mod n) );      if i mod n = n - 1 then      begin      ArrayAdd( Result, Int64Value );      Int64Value := 0;      end;   end;   ArrayAdd( Result, Int64Value );
|  |   Вопрос задал: Gooddy (статус: 3-ий класс)Вопрос отправлен: 25 июня 2011, 15:42
 Состояние вопроса: закрыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 14; последнее сообщение — 25 июня 2011, 19:06; участников в обсуждении: 3. 
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 15:44 [#1]:Ещё пример: Вход: 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1, n = 20
 Выход: 01010100011101010101 (одно число)
 
 Вход: 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1, n = 2
 Выход: 01 | 01 | 01 | 00 | 01 | 11 | 01 | 01 | 01 | 01 (одно число)
 
 Если кому интересно применять такую штуку я хочу для криптографии.
 Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 25 июня 2011, 15:44 [#2]:И в чём проблема? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 15:45 [#3]:Написано же 
 //Вот мои наработки, но работает очень нестабильно и в 90% случаев разделяет неверно.
 
 Читай: "Найдите ошибку или сделайте за меня"
 Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 25 июня 2011, 15:50 [#4]:Воспользуйся процедурой Move(). Только осторожно! Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 15:50 [#5]:Спасибо. Попробую. Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 15:59 [#6]:Не выходит. Дело в том что массив бит содержит в каждом байте 1 бит (как boolean). 
 Например для битов 01101011 будет массив
 00000000 00000001 00000001 00000000 00000001 00000000 00000001 00000001
 
 Вот так у меня всё некрасиво и неэффективно.
 Чисти код! Чисти код! Чисти код! |  
|   | min@y™ (статус: Доктор наук), 25 июня 2011, 16:07 [#7]:Переделай, шоб было лучше. Есть класс TBits, воспользуйся им. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 16:32 [#8]:Сделал. Алгоритм всё равно надо править. Чисти код! Чисти код! Чисти код! |  
|   | bugmenot (статус: 3-ий класс), 25 июня 2011, 16:35 [#9]: Цитата (Gooddy): Readed Finished MGIMO?
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 16:48 [#10]:bugmenot: а в чём собстно проблема? 
 Вроде сделал. И разбивает хорошо. Если кому интересно кину сюда.
 Чисти код! Чисти код! Чисти код! |  
|   | bugmenot (статус: 3-ий класс), 25 июня 2011, 17:30 [#11]:Prochitano - такой идентификатор гораздо лучше получится виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 17:37 [#12]:bugmenot: надеюсь это шутка =). 
 Итак, сделал кодировку. Вот код кому надо.
 фрагмент кода
 
 Теперь возникла новая проблема. Декодировать это дело. Проблема в том что незначащие нулевые биты могут быть в любом элементе массива...
 
 Поможет мне кто или новый вопрос задавать?
 Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 18:46 [#13]:Понял что необходимо сохранять информацию о количестве недописанных бит в последнем элементе. 
 Пробую сделать декодер
 Чисти код! Чисти код! Чисти код! |  
|   | Gooddy (статус: 3-ий класс), 25 июня 2011, 19:06 [#14]:Облом. Всё выкинул, делаю заново. Чисти код! Чисти код! Чисти код! |  26 июня 2011, 23:39: Вопрос закрыт (решение принял автор вопроса — Gooddy): Просто забил Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |