Вверх ↑
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
#1: 2010-06-29 13:38:28 ЛС | профиль | цитата
Есть файловый поток, мне нужно подсчитать количество подряд идущих одинаковых бит в нём. Как это лучше сделать? Можно, конечно, перевести поток в строку и потом байты перегнать в биты, но поток может быть очень большим, в строке не уместиться.

Например, последовательность бит: 000110100001
А нужно выдать число повторов бита: 3 2 1 1 4 1
карма: 9
0
Ответов: 4641
Рейтинг: 334
#2: 2010-06-29 14:05:37 ЛС | профиль | цитата
-del-
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#3: 2010-06-29 14:10:31 ЛС | профиль | цитата
Ravilr писал(а):
создай массив символов, а затем ArrayCountRepeats

Для этого случая не пойдет. Ему надо считать повторы до изменения состояния. Это только через stream можно сделать с побайтовым чтением, сохраняя состояние последнего бита для дальнйшего анализа
карма: 22

0
Ответов: 4641
Рейтинг: 334
#4: 2010-06-29 14:12:09 ЛС | профиль | цитата
nesco писал(а):
Для этого случая не пойдет

а точно.. неугледел.. не пойдет.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#5: 2010-06-29 14:14:31 ЛС | профиль | цитата
3042, если не секрет, для чего такой битовый анализ нужен
карма: 22

0
Ответов: 1926
Рейтинг: 172
#6: 2010-06-29 14:30:13 ЛС | профиль | цитата
nesco писал(а):
Это только через stream можно сделать с побайтовым чтением, сохраняя состояние последнего бита для дальнйшего анализа


Может, в IC есть более простые решения?

nesco писал(а):
3042, если не секрет, для чего такой битовый анализ нужен


Хочу попробовать архиватор сделать. А то всё плееры да плееры
карма: 9
0
Разработчик
Ответов: 4698
Рейтинг: 426
#7: 2010-06-29 14:39:35 ЛС | профиль | цитата
3042 писал(а):
Хочу попробовать архиватор сделать. А то всё плееры да плееры

Я тоже когда-то хотел такую фичу сделать, забросил, к тому же, не очень понятно, что будет лучше: записывать одним байтом значение, или одним байтом кол-во битов повторяющихся: вот будет например 01010101, и ты будешь писать в каждый байт следующую структуру <бит><кол-во> (например для примера выше 0111011101110111)
карма: 10
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#8: 2010-06-29 14:56:02 ЛС | профиль | цитата
Вообще-то, такой метод, только для dword применялся для упаковки битмапов. Чем больше фона, тем силнее сжимается картинка
карма: 22

0
Ответов: 1926
Рейтинг: 172
#9: 2010-06-29 15:00:17 ЛС | профиль | цитата
Assasin, дам небольшую наводку: составлять битовые столбцы и из них - новую последовательность бит. Например, порядок битов такой:

00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00111101
00001101
00001010
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
00100000
01001000
01101001
01000001
01110011
01101101
00100000
00110100
00101110
00110000
00110010
00100000

Это не придуманный набор, это "переведённый" License.txt. Если первый столбец "уложить" в строку, присоединить к нему второй столбец, также "уложенные" в строку, то тогда будет последовательноть поинтереснее...
карма: 9
0
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2010-06-29 15:49:11 ЛС | профиль | цитата
3042 писал(а):
Это не придуманный набор, это "переведённый" License.txt. Если первый столбец "уложить" в строку, присоединить к нему второй столбец, также "уложенные" в строку, то тогда будет последовательноть поинтереснее...

Кхм... пока что-то не сильно видно, что именно ты хочешь сделать, может, скинешь схему того, как ты это перевел Я со схем (как и с исходников компонентов) быстрее понимаю, что там делается
А где ты взял второй столбец?
------------ Дoбавленo в 15.49:
А, понял, это лишь перевод из байтов информации в биты
карма: 10
0
Ответов: 1926
Рейтинг: 172
#11: 2010-06-29 17:05:14 ЛС | профиль | цитата
code_19129.txt
карма: 9
0
файлы: 1code_19129.txt [1.6KB] [212]
Ответов: 4641
Рейтинг: 334
#12: 2010-06-29 17:49:30 ЛС | профиль | цитата
[offtop]3042, сверни свою портянку из битов... некрасиво как то ![/offtop]
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1926
Рейтинг: 172
#13: 2010-06-29 18:06:36 ЛС | профиль | цитата
[offtop]Ravilr, это как?[/offtop]
карма: 9
0
Ответов: 1379
Рейтинг: 86
#14: 2010-06-29 18:08:46 ЛС | профиль | цитата
[offtop]3042, в тег scroll [/offtop]
карма: 0

0
Ответов: 1926
Рейтинг: 172
#15: 2010-07-01 16:58:00 ЛС | профиль | цитата
Кто-нибудь знает, какими архиваторами пользуются на западе?

Какие есть хорошие архиваторы вообще?
карма: 9
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)