Russian Qt Forum
Ноябрь 25, 2024, 05:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Строка в двоичную систему счисления  (Прочитано 7965 раз)
Иван
Гость
« : Июль 30, 2012, 11:07 »

Доброго времени суток! Хочу реализовать алгоритм шифрования des, для этого мне необходимо считывать текст с виджета(пусть будет plain text edit) преобразовывать в hex,а затем из hex в двоичную систему, подскажите как правильнее и какими средствами это сделать:-)
Записан
mutineer
Гость
« Ответ #1 : Июль 30, 2012, 11:08 »

ты хочешь получить строку, в которой записано двоичное представление или массив байтов?
Записан
Иван
Гость
« Ответ #2 : Июль 30, 2012, 12:04 »

Думаю, массив байтов будет самое то:-)
Записан
mutineer
Гость
« Ответ #3 : Июль 30, 2012, 12:05 »

QString::to<нужнаяКодировка>() вернет QByteArray, который и есть искомый массив байтов
Записан
Иван
Гость
« Ответ #4 : Июль 30, 2012, 13:59 »

Я делаю так:
QByteArray qB;
QString str = QString("%1").arg(ui->plainTextEdit->toPlainText());
qB = str.toAscii();
получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #5 : Июль 30, 2012, 14:14 »

Я делаю так:
QByteArray qB;
QString str = QString("%1").arg(ui->plainTextEdit->toPlainText());
qB = str.toAscii();
получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?
А не проще ли было сделать так:
Код
C++ (Qt)
QByteArray qB = ui->plainTextEdit->toPlainText().toAscii();
? И чем буква из строки отличается от соответствующему ей ascii символу?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
mutineer
Гость
« Ответ #6 : Июль 30, 2012, 15:10 »

получается что  каждый элемент массива - буква из строки, а не соответствующий ей   ascii символ, что не так?

Ну так и должно быть. Если читать каждый байт символом - получишь собсно букву, если считать байт числом - получишь код буквы
« Последнее редактирование: Июль 30, 2012, 15:23 от mutineer » Записан
Иван
Гость
« Ответ #7 : Июль 30, 2012, 15:43 »

А можно маленький примерчик?:-)
Записан
mutineer
Гость
« Ответ #8 : Июль 30, 2012, 15:44 »

А можно маленький примерчик?:-)

Примерчик чего?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #9 : Июль 30, 2012, 15:54 »

Код
C++ (Qt)
QByteArray qB = ui->plainTextEdit->toPlainText().toAscii()
вот же пример. Только учти, что символы, отличные от ASCII, в том числе, например, кирилица, будут потеряны, если не установить QTextCodec::codecForCStrings.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Иван
Гость
« Ответ #10 : Июль 30, 2012, 16:27 »

Я просто не могу понять как мне увидеть результат-мою строку в ascii?и как это потом переводить в двоичную систему?
Записан
mutineer
Гость
« Ответ #11 : Июль 30, 2012, 16:30 »

Код:
int a = qB.at(0);

Вот тебе код первого символа. Как выглядит строка или символ в памяти компьютера представляешь? И чем символ в памяти отличается от числа?
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #12 : Июль 31, 2012, 12:38 »

Такое впечатление, что тролят тут не очень тонко )
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Июль 31, 2012, 12:44 »

Такое впечатление, что тролят тут не очень тонко )
Та отож. Вроде des - хз, наверное круто, но чего ж тогда плавать и тонуть в азах представления данных?
Записан
DmitryM
Гость
« Ответ #14 : Июль 31, 2012, 17:15 »

DES блочный симметричный алгоритм шифрования, тебе нужно QString представить в виде массива байтов, а потом этот массив байтов пилить на блоки по 64 бит
так что юзай следующие методы
Код
C++ (Qt)
QVector<uint> toUcs4 () const
QByteArray toUtf8 () const
const ushort * utf16 () const
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.281 секунд. Запросов: 23.