Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123

Произвольная кодировка текста

10.11.2015, 11:09. Показов 2110. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой вот массив: bool a2[10];
Имеется textEdit, в котором представлена произвольная информация, символы - буквы, цифры...
Мне нужно получить бинарный код, который я запишу в bool a2[10].

Я смотрел примеры, как это вообще делается:
Code
1
2
QTextCodec *koiCodec = codecForName("KOI8-R");
    QByteArray data = koiCodec->fromUnicode(ui->textEdit->toPlainText());
Но ошибка:
C:\Users\engineer\Documents\Qt\sig_gen\m ainwindow.cpp:11: ошибка: 'codecForName' was not declared in this scope
QTextCodec *koiCodec = codecForName("KOI8-R");
Я не нашел ответа, но понял, что мне нужно не совсем так. Есть МКТ-2:
https://ru.wikipedia.org/wiki/%D0%9C%D0%A2%D0%9A-2 Мне нужно кодировать и декодировать символы этим кодом. То есть получить биты в bool и наоборот. Хотя бы получить байты и вернуть строку обратно. Как это проще написать на QT?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2015, 11:09
Ответы с готовыми решениями:

Кодировка текста перестановкой столбцов в массиве, составленном из слов текста
Нужно заполнить двумерный массив с поля (Edit) после некоторых операций вывести массив в поле. Вопрос как заполнить массив с...

Кодировка текста
Доброго времени суток всем! Нужна было програма для перекодирование текста в Word-е... В принципе немного подрудившись написал...

Кодировка текста
Доброго времени суток! У меня следующая ситуация: создал папку в убунте, разшарил. Захожу на нее с винды, создаю и заполняю текстом файл....

22
0 / 0 / 2
Регистрация: 14.09.2014
Сообщений: 123
13.11.2015, 15:04  [ТС]
Студворк — интернет-сервис помощи студентам
Так bool же круче Qstring, вроде. Я сразу про него и думал. Или он хуже?

Добавлено через 19 минут
Сделал так:
C++
1
2
3
4
5
6
7
8
std::vector<bool> toBin(QChar c){
    std::vector<bool> boolArray;
    switch (c.unicode ()) {
    case 'a': {boolArray.push_back(true); boolArray.push_back(true); boolArray.push_back(false); boolArray.push_back(false); boolArray.push_back(false);};
 
    return  boolArray;
    }
}
А можно упростить, и чтобы при этом оптимально работало?

Добавлено через 17 минут
И как можно обрабатывать сразу строку?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::vector<bool> toBin(QString str)
{
    std::vector<bool> boolArray;
    for(std::string::size_type i = 0; i < str.size(); ++i){
 
        switch (str[i].unicode ()) {
            case 'a': {boolArray.push_back(true); boolArray.push_back(true); boolArray.push_back(false); boolArray.push_back(false); boolArray.push_back(false);};
            case 'o': {boolArray.push_back(true); boolArray.push_back(true); boolArray.push_back(false); boolArray.push_back(false); boolArray.push_back(false);};
            case 'о': {boolArray.push_back(true); boolArray.push_back(true); boolArray.push_back(false); boolArray.push_back(false); boolArray.push_back(false);};
        }
        return  boolArray;
    }
}
.unicode () раньше прокатывала, а сейчас не получается. Функция возвращает просто пустой массив, приотладке str[0].unicode () не существует, видите ли.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,323
13.11.2015, 15:07
Цитата Сообщение от lennen;83193 77
в bool a2[10].
В bool a2[10] поместится ровно 2 символа (по 5 бит). Этого достаточно?

Упростить можно, нужно составить таблицу типо:

C++ (Qt)
1
2
3
4
5
6
7
QChar telegraf [32][4]
{
'A', 'А', '-', 0x03,
'B', 'Б', '?', 0X19,
.....
.....
}
и так далее. И кодировать/декодировать уже по этой таблице.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,323
14.11.2015, 20:54
Цитата Сообщение от lennen Посмотреть сообщение
Так bool же круче Qstring, вроде. Я сразу про него и думал. Или он хуже?
Смотря для чего. Если у тебя учебная программа, то вывести на экран конечно проще строку типо "1100010011". Эту же строку можно записать в файл, затем можно прочитать из файла и расшифровать. ТО есть "передавать телеграммы".

Если задача минимизировать пакет данных для передачи (реальный телеграфный аппарат) то ессно только биты. Но тут есть нюанс. Телеграфный аппарат передаёт биты (по 1 или по 5, я не знаю). Компьютер работает с байтами по 8 бит. И придётся либо хранить в байте 5 бит (бесполезно теряя 3), либо затевать непростые танцы с бубном, упаковывая пятибитовые данные в байты. А они ещё однозначно не упакуются, например в 2 байта (16 бит) можно записать 2 символа по 5 бит = 10, а можно 3х5 = 15. И как угадать, было передано 2 или 3 символа?

В общем никому не нужный геморой, потому что компьютер не телеграфный аппарат. Лови подсказку:

C++ (Qt)
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
QString fn_charToBin(char xx)
{
    QString st;
 
    for(int i = 0; i < 5; i++)
    {
        st += QString::number(xx % 2);
        xx /= 2;
    }
 
return st;
}
 
 
// нажатие кнопки
void Widget::MyPressButton_1()
{
 
    QString str = "11111 ";
    char xx = 0x03;
 
    str += fn_charToBin(xx);
    str += " ";
 
    xx = 0x19;
    str += fn_charToBin(xx);
    str += " ";
 
    xx = 0x0E;
    str += fn_charToBin(xx);
    str += " ";
 
    xx = 0x09;
    str += fn_charToBin(xx);
 
    ui->label_1->setText(str);
 
}
результат работы (с пробелами для наглядности):
Миниатюры
Произвольная кодировка текста  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.11.2015, 20:54

кодировка текста
доброго времени суток, подскажите пожалуйста как решить такую задачку на delphi: &quot;Закодировать и раскодировать текст по следующему...

Кодировка текста
Здравствуйте, не могу решить проблему, после выполнения программы using System; using System.Collections.Generic; using...

Кодировка текста
Доброго времени суток! подскажите, пожалуйста, у меня есть файл с расширением txt но там проблемы с кодировкой текста. могу ли я...

Кодировка текста
У меня вот появилась такая идейка написать кодировщик текста. То есть по такой схеме: английский алфавит нумеруется по порядку начиная от...

Кодировка текста
Проблема заключается в том, что текст на русском языке кодируется некорректно. Если заносить данные из формы, то в БД они появляются...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru