Форум программистов, компьютерный форум 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
17265 / 5519 / 343
Регистрация: 30.03.2009
Сообщений: 15,022
Записей в блоге: 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 что обозначает
 
Текущее время: 01:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru