Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200

Преобразование в двоичный код

18.10.2020, 22:27. Показов 6421. Ответов 27
Метки c++, qt (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Хотел бы задаться таким вопросом: Можно ли как то перевести символ Unicode в двоичную систему счисления?
Допустим у меня есть слово "Привет" и как мне его перевести в двоичный код? (Желательно с помощью стандартных средств QT *если это возможно*)
С латинскими словами проблем нет, но с русскими беда
Вот что у меня получилось:
C++ (Qt)
1
2
        QByteArray arr = str.toLatin1();
        qDebug()<<QString::number( arr[0], 2 );
Подскажите,пожалуйста, что можно придумать! Заранее большое спасибо)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.10.2020, 22:27
Ответы с готовыми решениями:

Двоичный код произвольного символа
Привет! Задача следующая. Курсовая по шифрованию. Нужно извлечь двоичный код символа (16 битная кодировка) и записать в переменную или...

Преобразование в двоичный код С.
Задание следующее: Написать программу, которая получает случайное целое типа int,выводит егодвоичное представление на экран, выполняет...

Преобразование текста в двоичный код
Здравствуйте! Подскажите, как в Visual Studio C# преобразовать текст из richTextBox1.Text (типа «Преобразовать») в двоичный код, записать...

27
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
18.10.2020, 23:49
Лучший ответ Сообщение было отмечено Magicspree как решение

Решение

Magicspree, теоретически, как-то так )

C++ (Qt)
1
2
3
4
5
    QString s="Привет";
    for(QChar c:qAsConst(s))
    {
        qDebug()<<QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),16, 2,QChar{'0'} );
    }
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 09:51  [ТС]
Спасибо за ответ! Неужели только такой (извините за выражение) некрасивый код? Я думал в Qt для этого есть какие-то стандартные функции... Не у что придется с такими костылями решать проблему?
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 09:58
Magicspree, вряд ли разработчики предполагали, что юникод будут постоянно выводить в двоичном виде
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 10:03  [ТС]
Алексей1153, Странно, но почему то на сайтах, где раскодируют бинарный код, слово "Привет" (кодируется и раскодируется) не так как в программе.
Например в программе - это 0000010000011111000001000100000000000100 0011100000000100001100100000010000110101 0000010001000010
На сайтах - 1101000010011111110100011000000011010000 1011100011010000101100101101000010110101 110100011000001000001010

Что делать? Не понимаю

Да,Вы, правы. Не подумал что разработчикам - это (пока что) нафиг не надо
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 10:18
Magicspree, не знаю, что там "на сайте", мой вариант можно проверить так:

вывод в двоичном и шестнадцатеричном виде
C++ (Qt)
1
2
3
4
5
....
        qDebug()
            <<QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),16, 2,QChar{'0'} )<<", "
            <<QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),4, 16,QChar{'0'} );
....
"0000010000011111" , "041f"
"0000010001000000" , "0440"
"0000010000111000" , "0438"
"0000010000110010" , "0432"
"0000010000110101" , "0435"
"0000010001000010" , "0442"


далее сравниваем коды по таблице

например U+041F это П
2
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 10:45  [ТС]
Алексей1153, Вау, спасибо еще раз большое спасибо! Скажите пожалуйста что значит приписка "U+"? Это значит что формат в Unicode?
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 10:49
Magicspree,

Цитата Сообщение от википедии
Универсальный набор символов перечисляет допустимые по стандарту Юникод символы и присваивает каждому символу код в виде неотрицательного целого числа, записываемого обычно в шестнадцатеричной форме с префиксом U+, например, U+040F.
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 10:51  [ТС]
Вот фотографии на 1 картинке буква "П" переводится в бинарный код так.
Во 2 фотографии наш код преобразуется в "нечто".
Извините, что докапываю этим, но просто очень хочется разобраться)
Миниатюры
Преобразование в двоичный код   Преобразование в двоичный код  
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 10:53  [ТС]
Алексей1153, Понял,спасибо за ответ!
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 11:06
Magicspree, там UTF8, похоже. Судя по таблице

П имеет код D09F или 1101 0000 1001 1111
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 11:09  [ТС]
Алексей1153, А для шифрования в AES это имеет какой то смысл? Что в Unicode, что в UTF-8? И если да, то можно ли наш код преобразовать в UTF-8? Через toUTF-8?
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 11:15
Magicspree, AES - это не кодировка, это алгоритм шифрования сырых данных. Ему фиолетово, что именно означают эти данные, он байты пережёвывает
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 11:22  [ТС]
Алексей1153, Понял, буду пробовать, Спасибо большое, что помогли!

Добавлено через 2 минуты
Алексей1153, Ну а если все же пробовать преобразовывать в UTF-8, то как это можно реализовать? Использование str.toUtf8() не шибко помогает(

Добавлено через 2 минуты
Алексей1153, И еще вопрос
Вы представляете "П" как "0000010000011111". Вы добавляете в начало 0-и. Для того чтоб получился 16 бит-ный код? Верно?
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 11:23
Magicspree, у QString это стандартный метод https://doc.qt.io/qt-5/qstring.html#toUtf8

что именно не устраивает и чем не помогает?

Добавлено через 43 секунды
Magicspree, нет, я ничего не добавляю вручную
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 11:30  [ТС]
Алексей1153,
Мой код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
QString str = "П";
 AES_INC ai;
    qDebug()<<ai.getDoubleStd(str.toUtf8());
 
QByteArray AES_INC::getDoubleStd(QString str)
{
    QList<QString> list_str = str.split(" ");
    for (int i = 0; i < list_str.count(); ++i)
    {
        for(QChar c:qAsConst(list_str.at(i)))
        {
            messageToDouble.append(QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),16, 2,QChar{'0'}));
        }
    }
    return messageToDouble;
}
В Любом итоге хоть через toUtf-8, что без него. Вывод один и тот же. В чем может быть "подвох"?

Добавлено через 2 минуты
Алексей1153,
Если в коде убрать QChar{'0'} то вместо "0000010000011111" (16 бит) получается " 10000011111" (11 бит)
C++ (Qt)
1
QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),16, 2,QChar{'0'} )
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 11:41
Magicspree, подвоха нет, есть два преобразования U->UTF8->U
QByteArray QString::toUtf8() const
Returns a UTF-8 representation of the string as a QByteArray.
UTF-8 is a Unicode codec and can represent all characters in a Unicode string like QString.
для аргумента getDoubleStd срабатывает конструктор
QString::QString(const QByteArray &ba)
Constructs a string initialized with the byte array ba. The given byte array is converted to Unicode using fromUtf8(). Stops copying at the first 0 character, otherwise copies the entire byte array.
Цитата Сообщение от Magicspree Посмотреть сообщение
Если в коде убрать QChar{'0'}
тут указан символ заполнения ведущих незначащих разрядов
1
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 11:51  [ТС]
Алексей1153, Честно сказать не понимаю
Получается что когда я использую str.toUtf8()
C++ (Qt)
1
ai.getDoubleStd(str.toUtf8())
То в функции срабатывает конструктор и из UTF-8 он преобразуется в UNICODE верно? Из-за это результат выводится одинаковый?

Но если это так, то я использую list_str.at(i)).toUtf8(), то получается еще более нечто ужасное - 11111111110100001111111110011111
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
QString str = "П";
    AES_INC ai;
    qDebug()<<ai.getDoubleStd(str);
 
QByteArray AES_INC::getDoubleStd(QString str)
{
    QList<QString> list_str = str.split(" ");
    for (int i = 0; i < list_str.count(); ++i)
    {
        for(QChar c:qAsConst(list_str.at(i)).toUtf8())
        {
            messageToDouble.append(QString("%1").arg(*reinterpret_cast<uint16_t*>(&c),16, 2));
        }
    }
    return messageToDouble;
}
Честно, сказать вообще запутался
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,173
19.10.2020, 12:00
Magicspree,

1) toUtf8 возвращает QByteArray (внутри - уже utf8, преобразование произведено в функции toUtf8 )
2) первый аргумент функции getDoubleStd имеет тип QString , а туда передают QByteArray. Срабатывает преобразование, и QByteArray преобразуется в юникод внутри QString str

Цитата Сообщение от Magicspree Посмотреть сообщение
я использую list_str.at(i)).toUtf8(),
а зачем?

я запутался в твоих целях
0
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 200
19.10.2020, 12:07  [ТС]
Алексей1153, Я хочу попробовать сделать так, чтоб преобразование было не в UNICODE, а в UTF-8 (UTF-8 же тоже поддерживает кириллицу?). Т.е бинарный код "формировался" на основе UTF-8, а не UNICODE.
Да я знаю, что по теме вопроса, я должен был делать из UNICODE, но когда Вы сказали что (на сайтах) используется UTF-8, то захотел попробовать его.
Как то вот так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2020, 12:07
Помогаю со студенческими работами здесь

Преобразование Букв в двоичный код
Вот надыбал такой код для сабжа #include &lt;iostream&gt; using namespace std; int main() { cout&lt;&lt; &quot;Vvod: &quot;; ...

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

Преобразование символов в двоичный код и обратно
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type...

Преобразование строки в двоичный код и обратно
Есть ли функция для преобразования строки которая содержится в переменной в двоичный код и обратно? если &quot;Да&quot; - то подскажите...

Разработать узел, осуществляющий преобразование число-импульсного кода в 8-разрядный параллельный двоичный код
Помогите хоть кто нибудь пожалуйста, я уже руки опустил ничего не получается Вот задание: Разработать узел, осуществляющий...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru