0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
1

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

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

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

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

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

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

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

12
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
06.11.2015, 23:33 2
Лучший ответ Сообщение было отмечено Alanso как решение

Решение

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

Решение

Там через объединение (union) сделано. Поле ch - байт целиком, а bit - для доступа к отдельным битам.
Вводят ch, выводят bit. Сделай наоборот: задавай биты, а потом выводи ch.
0
0 / 0 / 0
Регистрация: 09.06.2015
Сообщений: 16
09.11.2015, 19:56  [ТС] 5
nmcf, максимум что я понял (если конечно понял) так это
C++
1
2
3
4
5
union bits
{
    struct byte bit;
    char ch;
} ascii;
А дальше ничего не удалось, прошу помощи у вас
0
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
09.11.2015, 20:02 6
Лучший ответ Сообщение было отмечено 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 7
Лучший ответ Сообщение было отмечено 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  [ТС] 8
nmcf, Декодирование позарез нужно.
Shonrens, Спасибо, только вот разобрать не смог. Получается он кодирует и декодирует фразу, мне получается нужно 2 программы, 1 чтобы кодировала слово, другая декодировала.
Я решил поискать и нашел такую программу в бинарном коде, поэтому и решил взяться за неё(2ю её часть, т.е декодирование слова).
Огромное спасибо что пытаетесь помочь.

Добавлено через 2 минуты
nmcf, а как на счет этого?
0
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
09.11.2015, 20:55 9
Лучший ответ Сообщение было отмечено 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  [ТС] 10
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
Сообщений: 459
Записей в блоге: 7
10.11.2015, 23:18 11
Alanso, что каким вайлом подправить? вы вообще сами понимаете что хотите сделать? кодинг это не сел и написал, тут элемнтарщину хотя бы надо знать
0
15 / 15 / 8
Регистрация: 06.06.2015
Сообщений: 99
11.11.2015, 02:09 12
У меня все работает. Попробуй новый проект создать.
[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 13
Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2015, 02:41
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru