Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/65: Рейтинг темы: голосов - 65, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16

Перевод двоичного кода в текст

06.11.2015, 16:21. Показов 12535. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане, у меня было задание сделать шифратор/дешифратор текста, хотя в С++ не работал ^_^
У вас на форуме нашел рабочий исходник, ввожу текст - каждая буква переводится в двоичный код (или бинарный).
Сам код находится тут.
Теперь мне нужно сделать программу чтобы она обратно из кода выводила слово.
Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2015, 16:21
Ответы с готовыми решениями:

Осуществить перевод из двоичного кода в десятичный
Помогите пожалуйста. Нужно срочно решить несколько задач самым простейшим образом(без библиотек и функций) на уровне 1 курса =) Написать...

Преобразование двоичного кода в текст
есть код: struct home { char name; long number; int dom; int kvartira; };

Перевод из двоичного счисления в десятичное
Здравствуйте. Подскажите, почему так получается: при числе, состоящем из менее чем десяти знаков, программка нормально переводит из...

12
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
06.11.2015, 23:33
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

Обратное действие - биты записываешь через bit, а потом берёшь ch. Только при чём тут шифрование?
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
08.11.2015, 19:57  [ТС]
nmcf, как понять через bit, а затем ch?
Прошу помоги.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
08.11.2015, 20:46
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

Там через объединение (union) сделано. Поле ch - байт целиком, а bit - для доступа к отдельным битам.
Вводят ch, выводят bit. Сделай наоборот: задавай биты, а потом выводи ch.
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
09.11.2015, 19:56  [ТС]
nmcf, максимум что я понял (если конечно понял) так это
C++
1
2
3
4
5
union bits
{
    struct byte bit;
    char ch;
} ascii;
А дальше ничего не удалось, прошу помощи у вас
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.11.2015, 20:02
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

C++
1
2
3
4
5
6
ascii.bit.a = 1;
ascii.bit.b = 0;
//...
ascii.bit.h = 1;
 
cout << ascii.ch;
Добавлено через 1 минуту
Тебе точно это надо? Там какой-то школьный пример, все биты буквами обозначены, по номеру не обратишься.
0
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
09.11.2015, 20:02
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>
using namespace std;
void print(string line);
void coding(string &line, int mask);
void decoding(string &line, int mask);
int main() {
    cout << "Enter you line\n:";
    string line = "";
    getline(cin, line);
    cout << "Enter you code digit mask\n:";
    int mask;
    cin >> mask;
    cout << "Coding line: ";
    coding(line,mask);
    print(line); 
    cout << "Decoding line: ";
    decoding(line, mask);
    print(line);
        
    return 0;
}
void print(string line) {
    for (int i = 0; i < line.length(); i++) {
        cout << line[i];
    }
    cout << endl;
}
void coding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
    }
}
void decoding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
    }
}
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
09.11.2015, 20:19  [ТС]
nmcf, Декодирование позарез нужно.
Shonrens, Спасибо, только вот разобрать не смог. Получается он кодирует и декодирует фразу, мне получается нужно 2 программы, 1 чтобы кодировала слово, другая декодировала.
Я решил поискать и нашел такую программу в бинарном коде, поэтому и решил взяться за неё(2ю её часть, т.е декодирование слова).
Огромное спасибо что пытаетесь помочь.

Добавлено через 2 минуты
nmcf, а как на счет этого?
0
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
09.11.2015, 20:55
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

Так сделай для одного слова, посмотри там присутсвует бинарная операция "^". Значит тот код которий я тебе скинул делает операции с бинарним исчислением.
C++
1
2
3
void coding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
вот кодирует
C++
1
2
3
4
void decoding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
    }
а вот розкодировка
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
10.11.2015, 22:40  [ТС]
Shonrens, Как это сделать =(
Пробовал разбить код, просто выдает ошибки построений.

Добавлено через 32 минуты
Shonrens,
Шифратор удалось сделать, просто вырезав часть кода расшифровщика.
А вот как расшифровщик сделать, хз...

Добавлено через 25 минут
Shonrens, Удалось сделать, спасибо огромное. Код стал состоять из 28 строк.
Все что нужно - пашет.
Потом отпишу что, да как, но спасибо огромное.

Добавлено через 2 часа 24 минуты
Помогите скомпилировать, вылетает программа на конечных результатах, думаю while'ом нужно попытаться поправить, не удается.

Конечный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <string>
using namespace std;
void print(string line);
void decoding(string &line, int mask);
int main() {
    cout << "Enter you line\n:";
    string line = "";
    getline(cin, line);
    cout << "Enter you code digit mask\n:";
    int mask;
    cin >> mask;
    cout << "Decoding line: ";
    decoding(line, mask);
    print(line);
 
    return 0;
}
void print(string line) {
    for (int i = 0; i < line.length(); i++) {
        cout << line[i];
    }
    cout << endl;
}
void decoding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
    }
}
0
 Аватар для Крюгер
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
10.11.2015, 23:18
Alanso, что каким вайлом подправить? вы вообще сами понимаете что хотите сделать? кодинг это не сел и написал, тут элемнтарщину хотя бы надо знать
0
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
11.11.2015, 02:09
У меня все работает. Попробуй новый проект создать.
[SPOILER]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string>
using namespace std;
void print(string line);
void decoding(string &line, int mask);
int main() {
    cout << "Enter you line\n:";
    string line = "";
    getline(cin, line);
    cout << "Enter you code digit mask\n:";
    int mask;
    cin >> mask;
 
    cout << "/nYour text: ";
    print(line);
 
    cout << "Coding line: ";
    decoding(line, mask);
    print(line);
 
    cout << "Decoding line: ";
    decoding(line, mask);
    print(line);
 
 
    return 0;
}
void print(string line) {
    for (int i = 0; i < line.length(); i++) {
        cout << line[i];
    }
    cout << endl;
}
void decoding(string &line, int mask) {
    for (int i = 0; i < line.length(); i++) {
        line[i] = line[i] ^ mask;
    }
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
    cout << "/nYour text: ";//Показывет твой текс который ты ввел
    print(line);
 
    cout << "Coding line: ";//Так сказать шыфрует)
    decoding(line, mask);
    print(line);
 
    cout << "Decoding line: ";//Разшыфровка
    decoding(line, mask);
    print(line);
Добавлено через 6 минут
Если не знаешь как работают функцию почитай или сделай вот так без них
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <string>
using namespace std;
int main() {
    cout << "Enter you line\n:";
    string line = "";
    getline(cin, line);
    cout << "Enter you code digit mask\n:";
    int mask;
    cin >> mask;
 
    cout << "/nYour text: ";
    for (int i = 0; i < line.length(); i++)
        cout << line[i];
 
    cout << "Coding line: ";
    for (int i = 0; i < line.length(); i++)
        line[i] = line[i] ^ mask;
    for (int i = 0; i < line.length(); i++)
        cout << line[i];
 
 
 
    cout << "Decoding line: ";
    for (int i = 0; i < line.length(); i++)
        line[i] = line[i] ^ mask;
 
    for (int i = 0; i < line.length(); i++)
        cout << line[i];
 
 
    return 0;
}
0
166 / 69 / 17
Регистрация: 22.03.2011
Сообщений: 196
11.11.2015, 02:41
Цитата Сообщение от Alanso Посмотреть сообщение
Теперь мне нужно сделать программу чтобы она обратно из кода выводила слово
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* Перевод текста в двоичную форму и обратно */
#include <iostream>
#include <algorithm>
#include <iterator>
#include <bitset>
#include <climits>
#include <sstream>
 
using namespace std;
 
int main() {
    using bs = bitset<sizeof(string::value_type) * CHAR_BIT>;
 
    string str;
    stringstream ss;
 
    struct bs_wrapper {
        bs_wrapper(const bs &a) : m_bs(a) { }
 
        operator char() const {
            return static_cast<char>(m_bs.to_ulong());
        }
 
        const bs &m_bs;
    };
 
    // вводим строку
    getline(cin, str);
 
    //конвертим в двоичное представление
    copy(str.begin(), str.end(), ostream_iterator<bs>(ss));
 
    // выводим результат
    cout << ss.str() << endl;
 
    // обратно, из двоичного представления собираем строку и выводим
    copy(istream_iterator<bs>(ss), istream_iterator<bs>(), ostream_iterator<bs_wrapper>(cout));
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2015, 02:41
Помогаю со студенческими работами здесь

Перевод двоичного числа в десятичное
Программа принимает введенное с клавиатуры двоичное число, например 1011, и выводит его десятичное представление, для 1011 - 11. Программа...

Перевод double из двоичного в десятичную
Допустим с клавиатуры мы вводим 101.1 и на выходе получаем 5.5. Как реализовать не пойму. Прошу помощи...

Перевод длинного двоичного числа в десятичную СС
Как можно перевести число из двоичной системы счисления в десятичную ели число длиной в 100-300 знаков...

Палиндром двоичного кода
Для введенного с клавиатуры натурального числа n(n&lt;=32000) определить является ли его запись в двоичной системе счисления палиндромом?

Разбор программы.Перевод двоичного числа в десятичн
char bin // изображение двоичного числа, почему именно так и что такое bin? нигде не могу найти long int dec //десятичное число, что...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru