Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2018, 18:05   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Alexey Smirnov Посмотреть сообщение
Не очень понял. Не могли бы объяснить на примере?
так всё просто.
1) нужно отделить логику работы (алгоритм) от интерфейса.
ввели ваши чекбоксы. Вы их обработали и вернули некоторую структуру.
ну, например, массив MasksArray = byte[8]
там могут быть нули и единицы (или true/false - это не принципиально).
При вводе Вы должны позаботиться, что единица была хотя бы одна (иначе алгоритму нечего делать - кодировать некуда).

2) в том месте, где нужно получить маску для кодирования очередного бита message, брать очередную единицу из массива MasksArray, собственно кодировать её в маску (см. мой пост #4), потом этой маской кодировать очередное значение message, записывая очередной бит в байт.
всё.

p.s. цикл получится достаточно замороченным, т.к. нужно и раскладывать message побайтно, потом байт раскладывать побитно, при этом, этом нужно ещё двигаться по массиву масок и перебирать байты файла, куда записывать информацию, но, технически, это всё не так сложно.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2018, 19:06   #12
Alexey Smirnov
Пользователь
 
Регистрация: 16.11.2013
Сообщений: 33
По умолчанию

По первому пункту сделал обработку "Хотя бы одна единица должна быть" и сделал заполнение массива из 0 и 1, где 0 - это означает, что указанный бит изменять не надо, 1 - данный бит изменяем.

Код:
            byte[] checkBoxChecked = new byte[8];

            //Если флаг установлен, то присваиваем элементу массива значение "1", иначе "0"
            checkBoxChecked[0] = checkBoxZeroBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[1] = checkBoxOneBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[2] = checkBoxTwoBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[3] = checkBoxThreeBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[4] = checkBoxFourBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[5] = checkBoxFiveBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[6] = checkBoxSixBit.Checked ? (byte)1 : (byte)0;
            checkBoxChecked[7] = checkBoxSevenBit.Checked ? (byte)1 : (byte)0;
Как выполнить второй пункт, к сожалению, не понял. Не могли бы вы подсказать, как это должно выглядеть сразу для нескольких выбранных позиций для изменения (возможен вариант, что все позиции будут выбраны для изменения).

Последний раз редактировалось Alexey Smirnov; 21.09.2018 в 19:08.
Alexey Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML/CSS отобразить график по информации (алгоритм или метод) Lime Помощь студентам 3 12.04.2014 17:36
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
Теория информации. Метод сжатия Шеннона-Фано, Хаффмена и арифметический Fantazerishka Помощь студентам 0 15.02.2011 16:25
передача информации. метод post NSvirus PHP 2 27.10.2009 13:57
Сжатие информации. Метод RLE. WPALI4 Помощь студентам 4 19.11.2008 19:50