Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу для моделирования потоков данных в описанном в условии процессе http://www.cyberforum.ru/cpp/thread1824288.html
Некая программа может получать входные данные от пользователя и изредка от другой программы, причем данные, предоставляемые другой программой, имеют более высокий приоритет в сравнении с пользователем. Напишите программу для моделирования потоков данных в описанном процессе (структура данных – дек с ограниченным выходом). как прога может получать данные от другой проги? вот дек struct Node{...
C++ Ошибка MySQL Здравствуйте. Решил попробовать использовать таблицы MySQL в программе С++, но при подключении "mysql.h" компилятор начинает ругаться, мол "идентификатор SOСKET не определен", и показывает на строку int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen, unsigned int timeout); в mysql_com.h. Код моей программы: #include "stdafx.h" #include <stdio.h> #include <mysql.h>... http://www.cyberforum.ru/cpp/thread1822776.html
C++ Шифрование файла методом Вернама
Собственно кодирую текстовый файл методом Вернама и столкнулся с проблемой: уже в зашифрованном файле присутствуют символы SUB (которые сигнализирует о конце файла), я считываю побайтово функцией ifstream.get, вопрос в том, как сделать так, чтобы считывание не заканчивалось на этом символе, при этом этот символ естественно участвует в расшифровке соответствующего ему символа, конечно можно бы...
Вызов sprintf для типа не соответствующего формату C++
Какова реакция sprintf на передачу в нее значения с типом не соответствующим указанному в формате (UB не предлагать :) )? К примеру есть код int64_t x; char buf; sprintf(buf, "%i", x); //1-й вариант sprintf(buf, "%i", (int)(x & 0xFFFFFFFF)); //2-й вариант Оба варианта работают. Однако, программа с первым вариантом иногда падает (статистика для второго варианта еще не сформирована). Такое...
C++ Нужен совет. С++ курсовая с графикой в Linux или в Windows MSVS? http://www.cyberforum.ru/cpp/thread1821101.html
Добрый день. Необходимо сделать небольшой проект, который соответствовал требованиям. Для получения оценки "отлично", необходимо графически его оформить. Опыта в MSVS почти нет. Можно ли это сделать в Линукс? Если да, где копать? Спасибо!
C++ Подключение ресурсов Такое дело. Есть длл файл. В него запихнуты картинки. Две. Как их считать? Я пишу вот эти две строчки HMODULE FirstDll = LoadLibraryA("ConsoleApplication3.dll"); HBITMAP bitmapie = LoadBitmap(FirstDll,L"Image.jpg"); — это вообще работает?? У меня смутные сомнения, по поводу того, что первая строчка робит как надо. Но дело не только в загрузке битмапа. Я работаю в SFML. И вот как там... подробнее

Показать сообщение отдельно
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
17.10.2016, 23:06     Таблица битовых переходов
Поскольку замена идентична по всему файлу, достаточно в процедуре инициализации прочитать настройки и создать таблицу замен (сортированный массив из 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 Кб, 1 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru