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

Удалить из каждого байта строки первый (старший) бит. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ взлом паролей http://www.cyberforum.ru/cpp-beginners/thread376937.html
есть ли какие нибудь простые алгоритмы для взлома паролей к rаr архиву? Желательно чтоб были по с++
C++ Стрельба в координаты мыши Как оказалось, отсутствие математических основ в голове, это очень большая проблема, ибо застрял на простой задаче. Собственно, производится выстрел из корабля, снаряд должен лететь по направлению к мышке. Известны координаты начала полёта снаряда и координаты мышки, есть вектор, далее мысли заканчиваются... Гугл на эту тему, ничего путнего не предложил. Прикладываю картинку, чтобы было... http://www.cyberforum.ru/cpp-beginners/thread376912.html
Файловый поток вместо одного слова считывает два, почему? C++
Друзья! Вот код #include <stdio.h> #include <iostream> #include <fstream> using namespace std; int main () { ifstream ifs ("z.txt"); string temp;
C++ помогите переделать программу (по проще)
программа которое определяет максимальное число из введенной последовательности и положительных чисел (длина и последовательность не ограничен) программа должна проверять правильность исходных данных. как можно по другому или проще написать? include "stdafx.h" int _tmain(int argc, _TCHAR* argv)
C++ Метод Гаусса (блок-схема) http://www.cyberforum.ru/cpp-beginners/thread376897.html
Нужна помощь в вербальном описании блок-схемы,помогите,пожалуйста
C++ нужно написать прогу(исходника нет..) Долго сидел думал но так и не додумался как написать... первые месяцы только изучаю си и с++ вот собственно сама задача.. Написать программу вычисляющую сумму покупки К тетрадей и Н РУЧЕК С ПОМОЩЬЮ inline функции Написать программу вычисляющую частичную сумму ряда ∑_(n=1)^∞▒ln⁡〖n/√n〗 Расчет должен производиться двумя способами с помощью рекуррентной функции и функции, содержащий... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17630 / 5854 / 376
Регистрация: 30.03.2009
Сообщений: 16,141
Записей в блоге: 26
09.11.2011, 21:25
Когда голова плохо соображает, как такое сделать программно (хотя понимает, что сделать на бумажке), зачастую хорошим выходом будут череж...ые решения. Они неэффективные, некрасивые, зато понятные. Здесь я пользуюсь двумя разными понятиями "байт" и "char" (что есть тоже байт), поскольку они описывают немного разные сущности.

Берём исходный char и распиливаем его на отдельные биты и в результате создаём массив из 8 байт, в каждом элементе которого записан 0 или 1, в соответствии с нужным битом. Работаем кусками по 8 char'ов. Т.е. 8 char'ов превращаем в массив из 64 байтов. Далее из этого массива формируем массив из 56 байт, в котором выкинуты каждый 8-й байт (что соотвествует каждому старшему биту из каждого исходного char'а). Далее эти 56 байт превращаем в 7 char'ов. Таким образом из исходных 8 char'ов мы получили результирующие 7 char'ов, которые отображают последовательность с выкинутыми битами.

Если количество char'ов в исходном коде не кратно 8, то их искусственно дорастить нулями до кратного 8 значения, а потом посчитать, сколько выкинуть из хвоста результирующей последовательности

Поскольку в программе ты будешь оперировать одним и тем же типом для того, что я называл "char" и "байт", то вместо "байт" лучше использовать int. Отожрётся немного побольше памяти, но зато не запутаешься, который char что обозначает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru