Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
1

Таблица битовых переходов

11.10.2016, 22:05. Показов 2008. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Появилась необходимость замены битовых комбинаций по заранее сгенерированным правилам. Суть проблемы такова: имеется битовый поток, необходимо пятибитовые комбинации заменить на другие. Предположим есть текстовый документ, в котором два столбца, в одном исходная комбинация бит, а через пробел комбинация на которую необходимо заменить. Помогите пожалуйста с процедурой подгрузки такого текстового документы, и процедурой замены комбинаций по правилу, указанному в txt. Благодарю за любые советы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2016, 22:05
Ответы с готовыми решениями:

Таблица переходов D-триггера
Доброго времени суток. Помогите составить таблицу переходов для двухступенчатого D-триггера....

Таблица переходов регулярных выражений
Здравствуйте, столкнулась с такой вот задачей : на вход подается регулярное выражение ( только...

Конечный автомат и таблица переходов
Здравствуйте! Может ли так быть, что в таблице переходов из одного состояния можно перейти в...

Задача про кубик (таблица переходов состояний)
Всеи привет. Нуждаюсь в помощи вашей друзья, как можно срочно, горю))) Помогите пожалуйста. Вот...

22
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
11.10.2016, 22:49 2
Это такой дурацкий метод русский текст шифровать? Напишите внятно, что за "битовый поток".

Можно считывать по 5 бит, но проще всего читать/писать блоками по 5*8=40 бит и делать замены внутри блока. Учитывая, что их всего 32, сортированного массива (lookup table) более, чем достаточно.
0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
11.10.2016, 23:00  [ТС] 3
Преобразую файл в битовый поток(массив,вектор, кто как привык называть), далее беру первые 5 бит(единички или нолики) и заменяю на другую 5 битную комбинацию (по правилу которое указано в текстовом файле,таблица соответствия ), после всех этих замен записываю в другой массив.

Добавлено через 1 минуту
Блоки плодить не хочу, у меня файлы для преобразования не такие уж и маленькие (от сотен метров )
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
11.10.2016, 23:10 4
Цитата Сообщение от Vokintos Посмотреть сообщение
Блоки плодить не хочу, у меня файлы для преобразования не такие уж и маленькие (от сотен метров )
Если у вас блок для замены 5 бит, то вариантов для его замены только 32 в худшем случае. Как так получается что "файлы для преобразования не такие уж и маленькие"?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
11.10.2016, 23:15 5
gray_fox, Берусь на спор в алфавите из 2-х символов 0 и 1 создать слово в 40 гигов. И без каких-либо периодов
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
11.10.2016, 23:22 6
Цитата Сообщение от Vokintos Посмотреть сообщение
Преобразую файл в битовый поток

Не по теме:

Впечатление какого-то бреда.


Если я вас все-таки понял, то вы используете custom Base32. Какого размера ваши файлы, значения не имеет. Лучший вариант обработки - именно блоки, кратные 40 bits.
0
gray_fox
11.10.2016, 23:29
  #7

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
gray_fox, Берусь на спор в алфавите из 2-х символов 0 и 1 создать слово в 40 гигов. И без каких-либо периодов
Да я похоже просто не понял, что значит "файл для преобразования"...

0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
16.10.2016, 21:33  [ТС] 8
в файлах перевод из байт в биты, и примерная таблица переходов(для 4-х бит), по такому правилу нужно преобразовать.
Не прошу ничего написать, просто натолкните на алгоритм замены комбинаций.
Файлы большие, а скорее всего будут подгружаться в реальном масштабе времени. До этого писал на делфи, а сейчас обстоятельства заставили перейти на C++. Поэтому только изучая и дохожу до всего. Задача есть, а время поджимает.
Вложения
Тип файла: txt Рї1.txt (733 байт, 3 просмотров)
Тип файла: txt таблица переходов кам 16.txt (176 байт, 3 просмотров)
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.10.2016, 22:19 9

Не по теме:

Кажется, давать вам советы бесполезно, но все же сделаю еще одну попытку.


Не могу представить, для чего могло бы потребоваться преобразование бит в байты (даже на Delphi). Расскажите лучше, в чем ваша задача: не в смысле всяких глупостей с битами на C, а сама исходная задача - на литературном русском.
0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
17.10.2016, 20:24  [ТС] 10
Имеется битовый массив
1.необходимо произвести сначала процедуру замены,
2.после чего декодировать данный поток по Риду-Соломона,
3.перестановка бит,
4.затем разделить на 40 потоков по одному биту,
5.далее в каждом произвести операции перестановки,
а в конце
6.слить все потоки побайтно в один.
Такая вот нехитрая задачка.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
17.10.2016, 22:01 11
Цитата Сообщение от Vokintos Посмотреть сообщение
Имеется битовый массив
Забудьте про "битовый массив".
Вопрос был о постановке задачи, а не о манипуляциях с битами. (К слову, RS не требует преобразования бит в байты).
0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
17.10.2016, 22:07  [ТС] 12
Хорошо, пусть так, есть файл, (*.bin). Сути не меняет, в любом случае придется преобразовывать в биты, так как модуляционное декодирование мне не произвести без этого.
Библиотека по RS имеется, разбираюсь с ней, но для декодирования с исправлением ошибок операции проводятся в битовом формате.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
17.10.2016, 22:31 13
ОК. И в чем вопрос? Делите на битовые блоки и работаете с ними. Удобно, чтобы размер блока был кратен байту. Никакого преобразования бит в байты не требуется.
0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
17.10.2016, 22:37  [ТС] 14
Загвоздка как раз в процедуре замены, никак не могу догнать как эти комбинации 5 битные (именно 5 битные) заменить на другие, до конца всего массива.
Т.е.
00000 заменить на 00100
01001 на 01101
И так все 32 комбинации.
Если простым условием if then, то считаю это не рационально, потому что таблица переходов меняется, и содержится в *.txt. И без нее придется каждый раз код менять.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
17.10.2016, 22:45 15
Цитата Сообщение от Vokintos Посмотреть сообщение
if then
Да уж! Есть стандартный прием (стандартней не бывает). Создаете (в файле) 32-х строчную таблицу. строка 0 - код, куда переходит комбинация 00000, ... строка 31 - во что переходит комбинация 11111. Считываете ее в память. Исходная комбинация - адрес, номер строки в таблице. Если это не понятно, пусть другие разжевывают.
У кого зубы молодые.
1
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
17.10.2016, 22:53  [ТС] 16
Да Вы правы я так и сделал, таблица и в ней код по строкам. Меня как раз и интересует эта процедура вызова (обращения, уж не знаю как и обозвать) из этой таблицы. Это то что я и пытался спросить, понимаю что коряво, но объяснился как мог!
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
17.10.2016, 22:59 17
Цитата Сообщение от Vokintos Посмотреть сообщение
процедура вызова (обращения, уж не знаю как и обозвать) из этой таблицы.
Берешь свои 5 битов. Превращаешь их в чисто от 1 до 31. Это число и будет номером строки в таблице. Извлекаешь эту строку (там тоже сидят 5 новых битов). Неужели что-то еще может быть непонятно?!!! Если это так - срочно меняйте специальность.
1
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
17.10.2016, 23:06 18
Поскольку замена идентична по всему файлу, достаточно в процедуре инициализации прочитать настройки и создать таблицу замен (сортированный массив из 32 элементов). Далее, читаете ваши 5 бит - индекс в массиве, находите в таблице нужную замену и пишете эти 5 бит в новый буфер. Все это удобно сделать в 5*8=40-битном буфере (например, unsigned int64). Возможно, производительнее будет читать по 8 бит (используя 256-элементную таблицу замен).

То есть, для одного 40-битного блока либо 8 раз читаете/пишете по 5 бит, либо 5 раз читаете/пишете по 8 бит с поиском/заменой по однократно составленной lookup (hash)-таблице.

Единственное, надо либо предусмотреть обработку неполного (последнего) блока, либо дополнять файл до кратного размера.

Если не думать об оптимизации чтения/записи, то можно просто читать/писать по 5 бит из потока (см. код bit_stream).
Вложения
Тип файла: 7z bit_stream.7z (1.6 Кб, 2 просмотров)
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
17.10.2016, 23:11 19
Цитата Сообщение от Байт Посмотреть сообщение
Превращаешь их в число от 1 до 31.
Ошибся малек. От 0 до 31.
0
0 / 0 / 0
Регистрация: 03.05.2016
Сообщений: 32
20.10.2016, 22:39  [ТС] 20
Создал процедуру подгрузки таблицы и дополнительный массивов, также поиск байтовой синхрокомбинации и усечение по ней. Но уткнулся в простую процедуру перевода из байт в биты(в файлах ниже). Выдает ошибку, что при выполнении на процессоре, что на видюхе. Взгляните и если сможете, скажите что не так. Заранее спасибо.
Вложения
Тип файла: txt MAIN[1].txt (4.7 Кб, 2 просмотров)
Тип файла: txt PROC[1].txt (4.4 Кб, 3 просмотров)
Тип файла: txt GPU[1].txt (5.8 Кб, 2 просмотров)
0
20.10.2016, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2016, 22:39
Помогаю со студенческими работами здесь

Ошибка в битовых сдвигах/битовых масках
Здравствуйте! Написал программу, ориентирующуюся на принцип записи числа по IEEE 754. Требуется...

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей передумал уже, но...

Обработка битовых изображений
Помогите,Создать программу обработки битовых изображений. Проект – приложение. Нужно использовать...

Сколько битовых строк?
Сколько битовых строк можно образовать из 6 единиц и 28 нулей, если каждая строка обязательно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru